Qt 程序中如何强制结束持续运行的槽函数
在 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/qij6 著作权归作者所有。请勿转载和采集!