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();
相关推荐
深蓝海拓4 分钟前
PySide6从0开始学习的笔记(二十五) Qt窗口对象的生命周期和及时销毁
笔记·python·qt·学习·pyqt
u0109272716 分钟前
模板编译期排序算法
开发语言·c++·算法
m0_6860416122 分钟前
C++中的适配器模式变体
开发语言·c++·算法
恒者走天下26 分钟前
cpp c++辅导星球价格调整
c++
rainbow68891 小时前
VSCode配置C/C++环境全攻略
c++
naruto_lnq1 小时前
C++中的桥接模式
开发语言·c++·算法
j445566111 小时前
C++中的职责链模式高级应用
开发语言·c++·算法
WarmSword2 小时前
mac上用cursor/vscode调试root权限进程
c++·ide·vscode·macos·mac
m0_736919102 小时前
模板元编程性能分析
开发语言·c++·算法
wbs_scy2 小时前
C++11:类新功能、lambda与包装器实战
开发语言·c++