在Qt中关闭新的非子窗口

Max*_*rai 3 qt qwidget

我正试图制作2个窗户.应该在第1次调用第2次.我没有连接他们孩子 - >父母.但当我打电话给第二个窗口并关闭时,第一个窗口也关闭了.我该怎么办?这两个窗口都来自QWidget.C++和Qt


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

ConfigWindow *ConfWindow = new ConfigWindow();
ConfWindow->show();
Run Code Online (Sandbox Code Playgroud)

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

希望描述一点好转.

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

this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
Run Code Online (Sandbox Code Playgroud)

没有它们一切都很好.如果我在窗口需要那些标志,我可以改变一些东西吗?

Ari*_*yat 10

你需要这样的东西:

QApplication app(argc, argv);
app.setQuitOnLastWindowClosed(false);
Run Code Online (Sandbox Code Playgroud)

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

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

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

如果此属性为true,则应用程序在关闭具有Qt :: WA_QuitOnClose属性集的最后一个可见主窗口(即没有父窗口的窗口)时退出.默认情况下,为子窗口以外的所有窗口小部件设置此属性

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