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



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

谢谢你,

伴侣

如果您不需要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(); 
}

相关内容

  • 没有找到相关文章

最新更新