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

Bav*_*ani 15 c++ qt

我知道我的问题类似于这个问题,但我无法从那里找到解决方案.任何人都可以回答我的问题吗?

我有这样的功能

void myWidget::showGPS()
{

/* This function will read data from text file
      that will continuouly change over time
           then process its data */

}
Run Code Online (Sandbox Code Playgroud)

我想每15-20秒调用一次这个函数,而不使用将布尔值设置为true的Quick-and-dirty方法.

有没有办法使用QT信号和带定时器的插槽或类似的东西来实现这一点

Bar*_*mar 25

该方法showGPS()应该成为一个MyWidget类的槽.然后,它只是一个使用QTimer该类的问题.

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

上面的代码每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();
}
Run Code Online (Sandbox Code Playgroud)