如何使用 QT 每 15 秒调用一次函数

How to call a function after every 15 seconds using QT

本文关键字:一次 函数 调用 QT 何使用      更新时间:2023-10-16

我知道我的问题与这个问题相似,但我无法从那里找到解决方案。谁能对我的问题给出一个简短的答案?

我有这样的函数

void myWidget::showGPS()
{
/* This function will read data from text file
      that will continuouly change over time
           then process its data */
}

我想每 15-20 秒调用一次这个函数,而不使用将布尔值设置为 true 的快速和肮脏的方法。

有没有办法使用QT信号和带计时器或类似东西的插槽

该方法showGPS() ,应成为MyWidget类的插槽。然后,只需使用 QTimer 类即可。

 QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), myWidget, SLOT(showGPS()));
    timer->start(15000); //time specified in ms

上面的代码将每 15 秒调用一次 showGPS((。由于调用是定期的,因此不必使用 setSingleShot() 方法将计时器设置为一次性模式。

编辑:

这是一个简单的poc,以帮助您理解它。

#include <QApplication>
#include <QtGui>
#include <qobject.h>
class MyWidget : public QWidget
{
    Q_OBJECT
public:
    MyWidget()
    {
        timer = new QTimer(this);
        QObject::connect(timer, SIGNAL(timeout()), this, SLOT(showGPS()));
        timer->start(1000); //time specified in ms
    }
public slots:
    void showGPS()
    {
        qDebug()<<Q_FUNC_INFO;
    }
private:
    QTimer *timer;
};

int main(int argc, char **args)
 {
    QApplication app(argc,args);
    MyWidget myWidget;

    return app.exec();
}

虽然您可以使用QTimer来检查文件更改,但在您的情况下,QFileWatcher可能是更好的解决方案。

相关文章: