在Qt程序中若slot槽函数持续运行如何点击叉号后强制结束进程
在Qt程序中,如果一个槽函数持续运行,并且点击窗口的关闭按钮(叉号)后强制结束进程,你可以使用Qt提供的QCoreApplication::quit()函数来实现。以下是一个示例代码:
#include <QCoreApplication>
#include <QObject>
#include <QTimer>
class MyObject : public QObject
{
Q_OBJECT
public:
explicit MyObject(QObject *parent = nullptr) : QObject(parent) {}
public slots:
void mySlot() {
// 模拟持续运行的槽函数
QTimer::singleShot(1000, this, SLOT(mySlot()));
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyObject obj;
QTimer::singleShot(0, &obj, SLOT(mySlot()));
// 当点击窗口的关闭按钮时,强制结束进程
QObject::connect(&a, SIGNAL(aboutToQuit()), &a, SLOT(quit()));
return a.exec();
}
在上面的示例代码中,MyObject类有一个槽函数mySlot(),它通过QTimer定时器来模拟一个持续运行的槽函数。在main()函数中,我们创建了一个MyObject对象,并通过QTimer的singleShot()函数来触发mySlot()槽函数的执行。在main()函数中,我们还通过QObject的connect()函数将QCoreApplication对象的aboutToQuit()信号连接到QCoreApplication对象的quit()槽函数上。这样,当点击窗口的关闭按钮时,aboutToQuit()信号会被触发,从而调用quit()槽函数来强制结束进程
原文地址: https://www.cveoy.top/t/topic/iBvn 著作权归作者所有。请勿转载和采集!