打开QDialog(Qt)后无法使用QMainWindow,

在我的程序中,我遇到了以下问题:从QMainWindow打开QDialog后,只有先关闭QDialog ,才能使用QMainWindow 。 有没有解决方案?

谢谢,

伴侣


如果你不需要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->listG‌​roup->currentRow()),‌​
     (ui->tableWidgetFiel‌​d->currentRow()+1),
     (‌​ui->actionRemi_mod->‌​isChecked()));
   fields_->show(); 
}
链接地址: http://www.djcxy.com/p/39283.html

上一篇: Can't use QMainWindow after opened a QDialog (Qt)

下一篇: Call method in QMainWindow from QDialog