如何在对话窗口Qt C ++中启动主窗口

时间:2016-12-13 10:36:08

标签: c++ qt qmainwindow qdialog

我使用QDialog Window制作了以下面板:

enter image description here

我想,我点击“确定”按钮查看MainWindow。

我编写了以下代码,但它无法正常工作

void QDialog::pushButton_clicked()
{
    MainWindow w;
    w.show();
}

2 个答案:

答案 0 :(得分:1)

如果您的QApplication exec()已在运行,您仍然可以打开QMainWindow,但是,在您的示例中,您在函数内的堆栈上创建MainWindow,并且它的范围在调用show()之后立即结束。

这意味着一旦pushButton_clicked()函数返回,将释放MainWindow对象。

提示:将MainWindow的声明移到其他位置,例如给它一个全局范围或将它移动到你自己的QApplication类的声明等。

答案 1 :(得分:1)

Steeves answer之外,您还可以将代码更改为

    MainWindow *w = new MainWindow();
    w->setAttribute(Qt::WA_DeleteOnClose);
    w->show();

堆上的分配将阻止直接"释放"并且WA_DeleteOnClose确保在关闭Window时释放Memeory。

如果你想要一个你不知道范围的独立窗口,这是一个很好的方法。