一般情況下,Qt窗體的創建和顯示命令如下:
Main_window main_window;
main_window.show();
主窗體中設置屬性Qt::WA_DeleteOnClose
setAttribute(Qt::WA_DeleteOnClose);
則在main.cpp中可以將窗體創建為指針,這樣在退出時可以正確釋放指針資源。
Main_window* main_window{new Main_window{nullptr}};
main_window->show();
在main.cpp中使用智能指針unique_ptr
使用智能指針unique_ptr時,在主窗體中不能設置Qt::WA_DeleteOnClose,兩者都會在運行結束后釋放指針資源,造成異常。
// 使用智能指針,確保在退出作用域時,對象被銷毀。
unique_ptr<Main_window> main_window = make_unique<Main_window>(nullptr);
main_window->show();