如何使用 QT 每 15 秒调用一次函数
Posted
技术标签:
【中文标题】如何使用 QT 每 15 秒调用一次函数【英文标题】:How to call a function after every 15 seconds using QT 【发布时间】:2013-10-10 05:11:00 【问题描述】:我知道我的问题与QUESTION 类似,但我无法从那里找到解决方案。谁能简要回答我的问题?
我有这样的功能
void myWidget::showGPS()
/* This function will read data from text file
that will continuouly change over time
then process its data */
我想每 15-20 秒调用一次此函数,而不使用将 boolean 设置为 true 的 Quick-and-dirty 方法。
有没有什么方法可以使用 QT 信号和带有计时器或类似功能的插槽
【问题讨论】:
你还可以使用QTimer吗?只需将您的时间间隔设置为 15 秒?并通过“连接”将您的功能与计时器联系起来? (类似于您找到的链接。 示例在 QTimer 的文档中 【参考方案1】:方法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();
【讨论】:
【参考方案2】:虽然您可以使用 QTimer 检查文件更改,但在您的情况下 QFileWatcher 可能是更好的解决方案。
【讨论】:
感谢您的建议。我会尝试使用。 根据文件的更新速率,您可能希望限制更新速率。反过来,这可能会再次涉及QTimer
。以上是关于如何使用 QT 每 15 秒调用一次函数的主要内容,如果未能解决你的问题,请参考以下文章
即使App被IOS中的用户杀死,如何每10秒调用一次api?