如何在对话框窗口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库 如何修改对话框本身的属性(如:最大化、最小化按钮、关闭按钮、边框粗细、颜色等)