Qt:Qt桌面程序正常退出注意事项

一般情况下,Qt窗体的创建和显示命令如下:

cpp 复制代码
Main_window main_window;
main_window.show();

主窗体中设置属性Qt::WA_DeleteOnClose

cpp 复制代码
setAttribute(Qt::WA_DeleteOnClose);

则在main.cpp中可以将窗体创建为指针,这样在退出时可以正确释放指针资源。

cpp 复制代码
Main_window* main_window{new Main_window{nullptr}};
main_window->show();

在main.cpp中使用智能指针unique_ptr

使用智能指针unique_ptr时,在主窗体中不能设置Qt::WA_DeleteOnClose,两者都会在运行结束后释放指针资源,造成异常。

cpp 复制代码
// 使用智能指针,确保在退出作用域时,对象被销毁。
unique_ptr<Main_window> main_window = make_unique<Main_window>(nullptr);
main_window->show();
相关推荐
无敌最俊朗@5 小时前
C++ 序列容器深度解析:vector、deque 与 list
开发语言·数据结构·数据库·c++·qt·list
Humbunklung5 小时前
VC++ 使用OpenSSL创建RSA密钥PEM文件
开发语言·c++·openssl
Humbunklung5 小时前
填坑:VC++ 采用OpenSSL 3.0接口方式生成RSA密钥
开发语言·c++·rsa·openssl 3.0
Larry_Yanan5 小时前
QML学习笔记(十五)QML的信号处理器(MouseArea)
c++·笔记·qt·学习·ui
努力学习的小廉7 小时前
我爱学算法之—— 模拟(下)
c++·算法
Larry_Yanan7 小时前
QML学习笔记(十七)QML的属性变更信号
javascript·c++·笔记·qt·学习·ui
hsjkdhs8 小时前
C++之拷贝构造(浅拷贝与深拷贝)、this指针、内联函数
c++
默|笙8 小时前
【c++】红黑树的部分实现
开发语言·c++
轩情吖8 小时前
Qt常用控件之QSpinBox
开发语言·c++·qt·控件·桌面级开发·qspinbox·微调框
掘根8 小时前
【Qt】输入类控件2——SpinBox,DateEdit,TimeEdit,Dial,Slider
开发语言·qt