c++ - 退出 Qt 应用程序后如何做

标签 c++ qt dll usb qt-creator

据我了解,以下将执行一个应用程序,该应用程序将在所有相关窗口关闭时退出。

int main(int argc, char *argv[])
{
    QApplication cal(argc, argv); //Application instance

    MainWindow window; //Create window in the stack
    window.show(); //Show the window

    return cal.exec(); //Execute event loop
}

这也将退出所述应用程序。

quitButton = new QPushButton("Quit", this);

connect(quitButton, SIGNAL(clicked()), QApplication::instance(), SLOT(quit()));

我应该如何进行清理(关闭硬件连接和库等),以便我可以确保无论应用程序如何退出,也无论它在执行的什么时候退出,所有需要发生的事情都会发生?

我将在整个应用程序中打开一个库,并在大多数时间连接到 USB 设备。如果进程运行正常,我可以轻松关闭此连接,但如果有人决定在完成之前点击退出或关闭所有窗口,我希望安全地关闭连接。

最佳答案

QWidget 有一个名为 closeEvent 的虚函数(参见 Documentation ,它在调用 widgets close() 操作时调用。

或者,如果您不想拥有自己的 Base 小部件,您可以将自己挂接到信号 QApplication::lastWindowClosed(参见 here)。它在应用程序的最后一个可见窗口关闭时发出。

关于c++ - 退出 Qt 应用程序后如何做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24864075/

相关文章:

c++ - 为什么在声明 vector 迭代器时使用 typename 关键字?

c++ - 如何使用 C++ 更改 Window 的事件记录设备?

c++ - 理解 qthreads - 在线程之间共享数据

c++ - 将文件嵌入iOS应用(C++/Qt/cmake)

python - 如何在 qt 应用程序上使用 cv2.waitKey 使用 'p' 键暂停和播放

c++ - 用静态库替换dll

c++ - 在头文件与实现 (.cpp) 文件中定义构造函数

c++ - 为什么我的快速排序如此低效?

c++ - 在另一个线程中创建线程

c++ - 从另一个编译器导出的 DLL 加载类