打开 QDialog (Qt) 后无法使用 QMainWindow
Can't use QMainWindow after opened a QDialog (Qt)
在我的程序中我遇到了以下问题:在我从 QMainWindow
打开 QDialog
之后,我无法使用 QMainWindow
,只有当我关闭 [=10] =] 首先。
有解决办法吗?
谢谢,
交配
如果不需要exec的事件循环可以使用Dialog->show()。
你的问题是你在堆栈上创建对话框。这就是为什么 on_action_sszes_Mez_rt_k_triggered()
完成后您的对话框被删除的原因。您必须在堆上创建对话框:
#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->listGroup->currentRow()),
(ui->tableWidgetField->currentRow()+1),
(ui->actionRemi_mod->isChecked()));
fields_->show();
}
在我的程序中我遇到了以下问题:在我从 QMainWindow
打开 QDialog
之后,我无法使用 QMainWindow
,只有当我关闭 [=10] =] 首先。
有解决办法吗?
谢谢,
交配
如果不需要exec的事件循环可以使用Dialog->show()。
你的问题是你在堆栈上创建对话框。这就是为什么 on_action_sszes_Mez_rt_k_triggered()
完成后您的对话框被删除的原因。您必须在堆上创建对话框:
#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->listGroup->currentRow()),
(ui->tableWidgetField->currentRow()+1),
(ui->actionRemi_mod->isChecked()));
fields_->show();
}