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