如何在关闭Qt控制台应用程序之前运行我的析构函数?
How to run my destructor before close the Qt Console Application?
我想在单击Qt控制台应用程序的关闭按钮之前运行我的析构函数。我在堆栈溢出上发现了这个,在Qt控制台场景中没有调用析构函数。
我试图获取返回值,并在之后返回值,但这无济于事。
class MyClass
{
Q_OBJECT
public:
MyClass()
{
qDebug() << "MyClass()";
}
~MyClass()
{
qDebug() << "~MyClass()";
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyClass my;
int ret = a.exec();
qDebug() << "this line will not run.";
return ret;
}
我想知道为什么它不运行我的析构函数。
如果我想运行它。如何运行?
我希望它在单击关闭按钮时输出MyClass()
和this line will not run.
和~MyClass()
。
你可能想做这样的事情。我不确定它是否适用于Windows,因为我现在没有它,但它适用于Linux。
#include <signal.h>
#include <QCoreApplication>
#include <QObject>
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass()
{
qDebug() << "MyClass()";
}
~MyClass()
{
qDebug() << "~MyClass()";
}
};
void SigInt_Handler(int)
{
qDebug() << "Interrupt received";
qApp->quit();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyClass my;
signal(SIGINT, &SigInt_Handler);
int ret = a.exec();
return ret;
}
此外,如果您在其中使用 Q_OBJECT
宏,您的MyClass
应该扩展QObject
。
按Ctrl+C
时,将打印以下内容:
Interrupt received
~MyClass()
相关文章:
- system() 无法运行我的程序,因为空间
- 运行我的代码时出现分段错误(核心转储)问题
- 正在尝试循环回到开始以再次运行我的程序
- arm_data在第二次运行我的程序时中止失败,然后
- 我想在终端窗口中运行我的 CLion 程序
- 如何在关闭Qt控制台应用程序之前运行我的析构函数?
- 使用 dev-c++ 运行我的 GIS 应用程序可以"gdal201.dll is missing"
- 当我运行我的程序时,即使"user"输入数字||C++ 绘画作业
- Inno设置编译器未运行我的C/C 代码
- 在代码块中运行我的第一个图形程序
- 正在重新运行我的主方法
- 如何在MacOS上使用根特权运行我的应用程序
- C++ Xcode 不会运行我的 for 循环(很短)
- STLPORT.5.2.dll 和视觉C++之间有什么关系?我是否需要 stlport 才能运行我的程序
- 无法通过循环运行我的代码,但是手动复制和粘贴有效
- 运行我的SFML脚本的问题
- 在Visual Studio 2012中运行我的OpenCV代码时无法找出'u202A'警告
- dev为什么dev-C++不运行我的程序
- 每当我尝试在codelite中运行我的项目时,任何更改我'We让人觉得被忽视了
- 在旧版本的linux上运行我的代码