3

我正在尝试制作 2 个窗口。2nd 应该在 1st 中调用。我不连接他们的孩子->父母。但是当我调用第二个窗口并关闭它时,第一个窗口也关闭了。我该怎么办?两个窗口都继承自 QWidget。C++ 和 Qt


对不起我的描述不佳。我有一个主窗口。类继承自 QMainWindow。我创建了第二个窗口。类继承自 QWidget。在第一个(主窗口)中,我正在创建并调用第二个窗口

ConfigWindow *ConfWindow = new ConfigWindow();
ConfWindow->show();

没有给父母的链接。一切正常,但是当我关闭第二个窗口(配置窗口)时,我的主窗口也正在关闭。我不需要这个。在配置窗口关闭后我应该怎么做才能阻止关闭主窗口。

希望描述好一点。

我的第一个窗口有这个标志:

this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);

没有他们一切都很好。如果我需要窗口中的标志,我可以改变一些东西吗?

4

2 回答 2

10

你需要类似的东西:

QApplication app(argc, argv);
app.setQuitOnLastWindowClosed(false);

这是测试程序: http: //pastebin.com/f5903c5f4

请注意,现在您需要在主窗口的析构函数中显式调用quit()

如果您阅读QApplication::quitOnLastWindowClosed 文档,您会发现:

如果该属性为真,当最后一个可见的主窗口(即没有父窗口)与 Qt::WA_QuitOnClose 属性集关闭时,应用程序将退出。默认情况下,为所有小部件设置此属性,子窗口除外

因为您的主窗口是一个(无框)工具窗口,所以它很重要。这使得 ConfWindow 成为唯一的非子窗口顶级小部件。因此,如果您关闭 ConfWindow,它会促使应用程序实例退出。

于 2009-06-22T21:30:12.250 回答
0

如果这是代码,那么 Qt 中有一个巨大的错误。
上面的代码不应该关闭你的第一个 Windows,肯定有其他问题。
应用程序是关闭还是崩溃?

备注
谁在删除 configWindow?有一个Qt::WA_DeleteOnClose属性可以在关闭后删除窗口。

ConfigWindow *confWindow = new configWindow();
configWindow->setAttribute(Qt::WA_DeleteOnClose, true);
confWindow->show();
于 2009-06-21T07:24:23.197 回答