Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';在打开QDialog(Qt)后不要使用QMainWindow_C++_Qt_Qt5_Qdialog - Fatal编程技术网

C++ Can';在打开QDialog(Qt)后不要使用QMainWindow

C++ Can';在打开QDialog(Qt)后不要使用QMainWindow,c++,qt,qt5,qdialog,C++,Qt,Qt5,Qdialog,在我的程序中,我有以下问题:在我从QMainWindow打开QDialog后,我不能使用QMainWindow,除非我先关闭QDialog。 有解决办法吗 谢谢, Mate如果不需要exec的事件循环,可以使用Dialog->show() 如果不需要exec的事件循环,可以使用Dialog->show() 问题在于在堆栈上创建对话框。这就是为什么您的对话框在动作触发()后被删除。完成。必须在堆上创建对话框: #include <QMainWindow> #include <QS

在我的程序中,我有以下问题:在我从
QMainWindow
打开
QDialog
后,我不能使用
QMainWindow
,除非我先关闭
QDialog
。 有解决办法吗

谢谢,


Mate

如果不需要exec的事件循环,可以使用Dialog->show()

如果不需要exec的事件循环,可以使用Dialog->show()

问题在于在堆栈上创建对话框。这就是为什么您的对话框在动作触发()后被删除。完成。必须在堆上创建对话框:

#include <QMainWindow>
#include <QScopedPointer>
...

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QScopedPointer<DialogFields> fields_;
};

...

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    field_.reset(new DialogFields());
}

...

void MainWindow::on_action_sszes_Mez_rt_k_triggered() 
{ 
   fields_->adatokFogad((ui->listType->currentRow()+1),
     (ui->listG‌​roup->currentRow()),‌​
     (ui->tableWidgetFiel‌​d->currentRow()+1),
     (‌​ui->actionRemi_mod->‌​isChecked()));
   fields_->show(); 
}
#包括
#包括
...
名称空间用户界面{
类主窗口;
}
类主窗口:公共QMainWindow
{
Q_对象
公众:
显式主窗口(QWidget*parent=0);
~main窗口();
私人:
Ui::MainWindow*Ui;
QScopedPointer字段;
};
...
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
字段重置(新对话框字段());
}
...

void main window::on_action_sszes_Mez_rt_k_tricked() { 字段->adatokFogad((ui->listType->currentRow()+1), (ui->listG)‌​组->当前行()),‌​ (ui->tableWidgetFiel‌​d->currentRow()+1), (‌​ui->actionRemi_mod->‌​isChecked()); 字段->显示(); }
您的问题是在堆栈上创建对话框。这就是为什么您的对话框在动作触发()后被删除。完成。必须在堆上创建对话框:

#include <QMainWindow>
#include <QScopedPointer>
...

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QScopedPointer<DialogFields> fields_;
};

...

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    field_.reset(new DialogFields());
}

...

void MainWindow::on_action_sszes_Mez_rt_k_triggered() 
{ 
   fields_->adatokFogad((ui->listType->currentRow()+1),
     (ui->listG‌​roup->currentRow()),‌​
     (ui->tableWidgetFiel‌​d->currentRow()+1),
     (‌​ui->actionRemi_mod->‌​isChecked()));
   fields_->show(); 
}
#包括
#包括
...
名称空间用户界面{
类主窗口;
}
类主窗口:公共QMainWindow
{
Q_对象
公众:
显式主窗口(QWidget*parent=0);
~main窗口();
私人:
Ui::MainWindow*Ui;
QScopedPointer字段;
};
...
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
字段重置(新对话框字段());
}
...

void main window::on_action_sszes_Mez_rt_k_tricked() { 字段->adatokFogad((ui->listType->currentRow()+1), (ui->listG)‌​组->当前行()),‌​ (ui->tableWidgetFiel‌​d->currentRow()+1), (‌​ui->actionRemi_mod->‌​isChecked()); 字段->显示(); }
你能提供一些代码吗?你可能需要一个非
QDialog
.void主窗口::on_action_sszes_Mez_rt_k_trigged(){DialogFields字段;fields.adatokFogad((ui->listType->currentRow()),(ui->listGroup->currentRow(),(ui->tableWidgetField->currentRow()+1),(ui->actionRemi_mod isChecked());fields.setModal(true);fields.exec();}我想问题是我使用的是exec()而不是show()。但是当我尝试使用show()时,它只会打开我的对话框,然后立即关闭它。请将您的问题包括在您遇到问题的代码中。在评论中,它很难阅读,也不一定是永久的。谢谢。你能提供一些代码吗?你可能需要一个非
QDialog
。void主窗口::on_action_sszes_Mez_rt_k_trigged(){对话框字段;字段。adatokFogad((ui->listType->currentRow(),(ui->listGroup->currentRow(),(ui->tableWidgetField->currentRow()),(ui->actionRemi_mod->isChecked());字段。setModal(true);fields.exec();}我想问题是我使用的是exec()而不是show()。但是当我尝试使用show()时,它只会打开我的对话框,然后立即关闭它。请将您的问题包括在您遇到问题的代码中。在评论中,它很难阅读,也不一定是永久的。谢谢