是否可以将WA_DeleteClose属性用于没有父窗口的主窗口
Is it possible to use WA_DeleteOnClose attribute with a main window that has no parent?
我正在试验WA_DeleteOnClose
属性,它正好实现了我所需要的。比手动操作要整洁得多。然而,有一个问题:如果我在没有父级的情况下构造WA_DeleteOnClose
应用到的QMainWindow
,它在关闭时不会被删除。如果我确实设置了一个父级(应用程序的主QMainWindow
(,则有问题的辅助QMainWindow
将丢失其任务栏按钮,这是不可接受的。我该如何解决这个难题?
WA_DeleteOnClose
应该适用于任何顶级小部件。如果没有,那就是一个错误,或者你做错了其他事情,比如运行嵌套的事件循环。窗口是否被删除的一个简单测试是:
QObject::connect(widget, &QObject::destroyed, [](QObject * obj){
qDebug() << obj << "was destroyed";
});
WA_DeleteClose应用于没有父项的情况,它不会被删除
WA_DeleteOnClose
行为的实现中没有任何代码受到具有父级的小部件的影响。只要小部件是Qt::Window
,它就会被删除。参见closeHelper
。
有问题的辅助QMainWindow丢失了任务栏按钮,这是不可接受的
这可能适用于任何QWidget
,而不仅仅适用于QMainWindow
。
为了确认,这个测试用例对您不起作用吗?让我们知道应用程序输出显示了什么。
#include <QLabel>
#include <QPointer>
#include <QApplication>
int main(int argc, char ** argv) {
QApplication app(argc, argv);
QPointer<QLabel> label = new QLabel("Hello, world");
label->setAttribute(Qt::WA_DeleteOnClose);
label->setAttribute(Qt::WA_QuitOnClose);
label->show();
app.exec();
qDebug() << qVersion() << label; // will be null if label was deleted
return 0;
}
相关文章:
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 用于窗口的 HID 终端
- 用于 Opencv 3.3.0 窗口的非自由模块
- 从QT,Win7下,如何知道哪种窗口样式用于显示
- 是否有用于窗口操作的跨平台库
- 标准容器/库,用于存储数字窗口并返回唯一数字的数量
- 设置窗口放置不适用于最大化窗口
- MFC PreCreateWindow,用于创建一个填充除任务栏之外的屏幕的窗口
- 我们是否可以使用 Qt(64) 来生成一个同时适用于 32 位窗口和 64 位窗口的应用程序
- 如何在 OSX 上创建一个用于C++的窗口
- 用于windows上的窗口系统的win32框架的替代方案
- DX11在非托管C++中创建的设备,用于WPF窗口
- visual studio中用于复杂表单的C++可扩展GUI窗口
- 创建一个简单的窗口来输出用于调试的信息(日志样式)- wxWidgets
- 用于获取窗口控件的 API 方法
- 是否可以将WA_DeleteClose属性用于没有父窗口的主窗口
- 用于创建菜单栏的c++ win32程序(程序编译并运行,也显示窗口但不显示菜单栏)
- SFML C++ - 用于制作基本窗口的代码在划分时不起作用
- 有没有办法获得正在运行或新打开的浏览器窗口的IExplorerBrowser接口,用于后续的BrowseToXXX调用
- 上下文菜单适用于子窗口小部件,但不适用于父窗口小部件