我知道我的问题类似于这个问题,但我无法从那里找到解决方案.任何人都可以回答我的问题吗?
我有这样的功能
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)
| 归档时间: |
|
| 查看次数: |
17102 次 |
| 最近记录: |