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->listGroup->currentRow()),
(ui->tableWidgetField->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->tableWidgetField->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->listGroup->currentRow()),
(ui->tableWidgetField->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->tableWidgetField->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()时,它只会打开我的对话框,然后立即关闭它。请将您的问题包括在您遇到问题的代码中。在评论中,它很难阅读,也不一定是永久的。谢谢