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();
相关推荐
CodeKwang4 小时前
Qt实战:简易Excel表格 | 附完整源码
qt·excel·qtabwidget·qt控件
茉莉玫瑰花茶4 小时前
C++ 17 详细特性解析(5)
开发语言·c++·算法
cpp_25014 小时前
P10570 [JRKSJ R8] 网球
数据结构·c++·算法·题解
cpp_25014 小时前
P8377 [PFOI Round1] 暴龙的火锅
数据结构·c++·算法·题解·洛谷
程序员老舅5 小时前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
划破黑暗的第一缕曙光5 小时前
[C++]:2.类和对象(上)
c++·类和对象
墨雪不会编程5 小时前
C++之【深入理解Vector】三部曲最终章
开发语言·c++
cpp_25015 小时前
P9586 「MXOI Round 2」游戏
数据结构·c++·算法·题解·洛谷
kyle~5 小时前
ROS2---QoS策略
c++·机器人·ros2
爱吃生蚝的于勒5 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习