在 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 对象,并通过 QTimersingleShot() 函数来触发 mySlot() 槽函数的执行。在 main() 函数中,我们还通过 QObjectconnect() 函数将 QCoreApplication 对象的 aboutToQuit() 信号连接到 QCoreApplication 对象的 quit() 槽函数上。这样,当点击窗口的关闭按钮时,aboutToQuit() 信号会被触发,从而调用 quit() 槽函数来强制结束进程。

Qt 程序中如何强制结束持续运行的槽函数

原文地址: https://www.cveoy.top/t/topic/qij6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录