如何使用 QT 每 15 秒调用一次函数
How to call a function after every 15 seconds using QT
我知道我的问题与这个问题相似,但我无法从那里找到解决方案。谁能对我的问题给出一个简短的答案?
我有这样的函数
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可能是更好的解决方案。
相关文章:
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何为非常量和常量重载实现一次成员函数?
- 某些 boost::asio 异步函数是否将处理程序连接到操作,以便处理程序被触发一次?
- 如何一次运行3个函数?
- 循环中本地对象的析构函数是否保证在下一次迭代之前被调用?
- 调用函数一次用于动态链接库,一次从可执行文件调用函数
- 仅在函数中设置静态变量一次
- 有没有办法一次运行 3 个创建窗口函数?
- 在可变函数调用中执行一次语句
- 为什么转换运算符调用复制构造函数两次,而等效函数只调用它一次
- 为什么一次包装 typedef 函数签名与原始签名不匹配
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 我需要线程函数在不停止实际程序的情况下,每2秒打印一次随机数
- Android JNI RegisterNatives:对所有内容调用一次,或者每个函数调用一次
- 如何在 constexpr 构造函数中初始化矩阵一次?
- cppUnit:针对多个测试方法执行一次的设置函数
- 为什么调用 cout.operator<<(const char*) 打印地址而不是字符串? 如何创建一个函数本地静态"HashSet<char>"并初始化它一次?
- 跨类的多个实例调用函数一次
- C++一次将函数标记为静态就足够了?