Qt类中使用定时器

  QT定时器只能使用在进程或线程中。

  QT类中如果需要定时器,可以把定时工作安排在一个线程中执行。

class aaa : public QThread
{
    Q_OBJECT
     ...
protected:
     //重写run函数
     void run();
public slots:
     void timerOut();
private:
     QTimer *timer;
}

aaa::aaa(QThread *parent):QThread(parent)
{
     timer = new QTimer(0);
     connect(timer,SIGNAL(timeout()),this,SLOT(timerOut()),Qt::DirectConnection);
     timer->start(xxx);
}

void aaa::run()
{
     exec();
}

void aaa::timerOut()
{
   ....
}

int main()
{
     QCoreApplication a();
     aaa *pt = new aaa();
     pt->start();
     return a.exec();
}

  

时间: 2025-01-31 03:51:05

Qt类中使用定时器的相关文章

Win32下 Qt与Lua交互使用(四):在Lua脚本中自由执行Qt类中的函数

话接上篇.通过前几篇博客,我们实现在Lua脚本中执行Qt类中函数的方法,以及在Lua脚本中连接Qt对象的信号与槽. 但是,我们也能发现,如果希望在Lua脚本中执行Qt类的函数,就必须绑定一个真正实现功能的函数.如QWidget::show(),需要写一个在栈中取出widget指针,widget调用show()函数的方式.如果希望在Lua中调用大量函数,就需要编写大量的C++实现函数.有没有什么省时省力的好方法呢? 上一篇中我们实现了在Lua脚本中连接信号与槽.我们只是传过去了两个QObject的

非窗口类中使用定时器的方法(二)

就职百度期间,王劲分别创立了百度移动云事业部.百度大数据部.百度基础架构(云计算)部.百度美国研发中心.百度深圳研发中心:并以百度深度学习实验室(IDL)为基础,联合创立了百度研究院.在2010年4月到2015年4月的5年间,王劲同时还负责百度商业变现的技术与产品(凤巢). 2013年百度启动无人车项目,2015年12月14日,百度成立了自动驾驶事业部,王劲出任事业部总经理. 王劲一度成为百度无人车业务的代言人,直到2017年3月份,王劲离开百度,据腾讯<一线>报道,王劲与百度的分手并不愉快.

Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类

话接上篇.成功配置好Qt+Lua+toLua后,我们可以实现在Lua脚本中使用各个Qt的类.直接看代码吧. #include "include/lua.hpp" #include <QWidget> #include <QApplication> #include <QFile> #include <QDebug> static int tolua_new_QWidget(lua_State* pState) { QWidget* wid

Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)

在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度 1.QObject类的定时器 QObject是所有Qt对象的基类,它提供了一个基本的定时器.通过QObject::startTimer(),可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器的标识符.这个定时器开始就会在每一个时间间隔"触发",直到明确的使用这个定时器的标识符来调用QObjec

QT中使用定时器实现等待框的一实际应用情况

MainWindow::MainWindow(QWidget *parent) : CustomWindow(parent) { mIndex = 1; mpLoadLabel = new QLabel(this); mpTipLabel = new QLabel(this); mpTimer = new QTimer(this); mpTipLabel->setText(QString::fromLocal8Bit("拼命加载中...")); // 设定超时时间100毫秒 mp

在Qt工程中加Boost

摘要: Boost是一个很强大的C++库,堪比STL,里面有很多非常优秀的类库.我不多介绍,详情见官网:http://www.boost.org/ 要在我们的Qt工程中把这个库加进去应该怎么做呢?我今晚试了一下. Boost是一个很强大的C++库,堪比STL,里面有很多非常优秀的类库.我不多介绍,详情见官网:http://www.boost.org/ 要在我们的Qt工程中把这个库加进去应该怎么做呢?我今晚试了一下. 我从网上下载了Boost压缩文件,下载地址:boost_1_52_0.tar.g

QWidget类中默认是忽略inputMethodEvent事件(要获取输入的内容就必须使用这个事件)

因为项目的需要以及主管的要求,准备将工程移植到Qt中,这样就可以比较容易的实现跨平台了.因为之前工程是在windows下开发的,第一个平台又是mobile所以除了底层框架之外其他的都是使用的windows的API以及编程模式,现在要移植到Qt中,第一个要面临的问题就是如何将windows的消息机制很好的转换为Qt中的处理机制.windows中是消息,Qt中是事件和信号.槽,其实原理都是一样的. 1.常用事件 因为所有和界面相关的类都是继承自QWidget类,所以QWidget类有的时间和方法,在

Qt 类外调用一个 private slots 函数

MainWindow中 private slots 函数 void print_on_log(QString strtemp);输出一个字符串到编辑窗口中 class MainWindow:publicQMainWindow {Q_OBJECTpublic:explicitMainWindow(QWidget*parent=0);~MainWindow();privateslots:voidprint_on_log(QStringstrtemp); 定义一个新类Test_one在此类中调用上面的

Qt组件中的双缓冲无闪烁绘图

双缓冲绘图在Qt4中,所有的窗口部件默认都使用双缓冲进行绘图.使用双缓冲,可以减轻绘制的闪烁感.在有些情况下,用户要关闭双缓冲,自己管理绘图.下面的语句设置了窗口部件的Qt::WA_PaintOnScreen属性 ,就关闭了窗口部件的双缓冲.mywidget->setAttribute(Qt::WA_PaintOnScreen); 由于Qt4不再提供异或笔,组合模式QPainter::CompostionMode_Xor()并不是异或笔,Qt4只提供了QRubberBand实现矩形和直线的绘图反