对不起我的可怜描述。 我有一个主窗口。继承自QMainWindow的类。我创建了第二个窗口。继承自QWidget的类。 在第一个(主窗口)我正在创建并调用第二个窗口
ConfigWindow *ConfWindow = new ConfigWindow();
ConfWindow->show();
没有给父母的链接。一切正常,但当我关闭第二个窗口(配置窗口)时,我的主窗口也关闭了。我不需要这个。在配置窗口关闭后,我该怎么做才能阻止关闭主窗口。
我的第一个窗口有这个标志:
this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
没有它们一切都很好。如果我在窗口中需要那些标志,我可以改变一些东西吗?
答案 0 :(得分:10)
您需要以下内容:
QApplication app(argc, argv);
app.setQuitOnLastWindowClosed(false);
以下是测试程序:http://pastebin.com/f5903c5f4。
请注意,现在您需要在主窗口的析构函数中显式调用quit()。
如果您阅读QApplication::quitOnLastWindowClosed documentation,您会发现:
如果此属性为true,则应用程序在关闭具有Qt :: WA_QuitOnClose属性集的最后一个可见主窗口(即没有父窗口的窗口)时退出。默认情况下,为子窗口
以外的所有窗口小部件设置此属性
因为您的主窗口是(无框架)工具窗口,所以它会计数。这使得ConfWindow成为唯一的非子窗口顶级窗口小部件。因此,如果您关闭ConfWindow,它会激活应用程序实例退出。
答案 1 :(得分:0)
如果这是代码,那么Qt中存在一个巨大的错误 上面的代码永远不应该关闭你的第一个Windows,必须有其他错误 应用程序是关闭还是崩溃?
<强>备注强>
谁在删除configWindow?有一个Qt::WA_DeleteOnClose
属性可以在窗口关闭后删除它。
ConfigWindow *confWindow = new configWindow();
configWindow->setAttribute(Qt::WA_DeleteOnClose, true);
confWindow->show();