[英]How to run my destructor before close the Qt Console Application?
我想在單擊 Qt 控制台應用程序的關閉按鈕之前運行我的析構函數。我在 stackoverflow 上發現了這個, 在 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.