如何在对话框窗口Qt C++中启动主窗口[重复]

Posted

技术标签:

【中文标题】如何在对话框窗口Qt C++中启动主窗口[重复]【英文标题】:How to start Main Window inside Dialog Window Qt C++ [duplicate] 【发布时间】:2016-12-13 10:36:07 【问题描述】:

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

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

我写了下面的代码,但是没有用

void QDialog::pushButton_clicked()

    MainWindow w;
    w.show();

【问题讨论】:

【参考方案1】:

如果您的 QApplication exec() 已经在运行,您仍然可以打开 QMainWindow,但是,在您的示例中,您在函数内部的堆栈上创建 MainWindow,它的范围在致电show()

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

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

【讨论】:

你就是一个例子。 @斯蒂夫【参考方案2】:

除了Steeves answer,您还可以将代码更改为

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

堆上的分配将防止直接“释放”,WA_DeleteOnClose 确保在您关闭窗口时释放内存。

如果您想要一个不知道其作用域的独立窗口,这是一个好方法。

【讨论】:

Qdialog 窗口在主窗口中运行。在 QDialog 中编写此代码时,QDialog 再次打开。它不打开主窗口。 @ab.o2c 你是调用构造函数中的Dialog还是MainWindow的show()函数? int main (int argc, char *argv) QApplication a(argc, argv); QDialog w; w.show();返回 a.exec(); //MainWindow 类 @ab.o2c

以上是关于如何在对话框窗口Qt C++中启动主窗口[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C++ Qt库 如何修改对话框本身的属性(如:最大化、最小化按钮、关闭按钮、边框粗细、颜色等)

主窗口中如何获取子窗口某控件句柄?

在 Linux/X11 上的 Qt 中,如何解决主窗口排序问题?

QT开发(二十二)——QMainWindow主窗口

Qt中的弹出窗口

QT中想在子线程中创建对话窗口怎么建