0
在我的計劃,我有以下問題:我從QMainWindow
開了一個QDialog
後,我無法使用QMainWindow
,只有當我關閉QDialog
第一。 有沒有解決方案?不能使用的QMainWindow後開了QDialog的(QT)
謝謝
伴侶
在我的計劃,我有以下問題:我從QMainWindow
開了一個QDialog
後,我無法使用QMainWindow
,只有當我關閉QDialog
第一。 有沒有解決方案?不能使用的QMainWindow後開了QDialog的(QT)
謝謝
伴侶
如果您不需要EXEC的事件循環,您可以使用對話框 - >顯示()。
你的問題是你在棧上創建對話框。這就是爲什麼你的對話在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();
}
你能提供一些代碼嗎? –
您可能需要一個非[模式](http://doc.qt.io/qt-5/qdialog.html#modal-prop)'QDialog'。 – Holt
void MainWindow :: on_action_sszes_Mez_rt_k_triggered() { DialogFields字段; (ui-> listType-> currentRow()+ 1),(ui-> listGroup-> currentRow()),(ui-> tableWidgetField-> currentRow()+ 1),(ui-> actionRemi_mod - >器isChecked())); fields.setModal(true); fields.exec(); } 我想問題是我使用exec()而不是show()。但是當我試圖使用show()時,它只是打開我的對話框,然後立即關閉它。 – Mat