重要函数:
1.int startTimer(int); //设置定时器,返回一个ld.
2.int event->timerld(); //返回当前的ld.
3.void killTimer(int); //停止定时器.


首先从Qt设计师中拖拽出三个按钮,由于只是演示定时器事件的使用,所以就没有布局的需要了.


以下是”c.cpp”的代码:

#include"c.h"c::c(QWidget*parent):QMainWindow(parent){ui.setupUi(this);//连接信号与槽.connect(ui.startButton,SIGNAL(clicked()),this,SLOT(startTimerSlot()));connect(ui.stopButton,SIGNAL(clicked()),this,SLOT(stopTimerSlot()));}c::~c(){}voidc::timerEvent(QTimerEvent*event){//判断当前定时器对应的是哪个ld.if(event->timerId()==this->m_lamp){if(this->m_lampStatus==false){//设置按钮的图标.ui.toolButton->setIcon(QIcon("Icons/lamp.png"));this->m_lampStatus=true;}else{ui.toolButton->setIcon(QIcon("Icons/space.png"));this->m_lampStatus=false;}}}voidc::startTimerSlot(){//设置定时器,返回一个timerld.注意单位为毫秒,1000毫秒等于1秒.this->m_lamp=this->startTimer(1000);}voidc::stopTimerSlot(){//停止定时器.this->killTimer(this->m_lamp);}12345678910111213141516171819202122232425262728293031323334353637383940414243444546


以下是”c.h”的代码:

#ifndefC_H#defineC_H#include<QtWidgets/QMainWindow>#include"ui_c.h"#include<QLabel>#include<QTimerEvent>classc:publicQMainWindow{Q_OBJECTpublic:c(QWidget*parent=0);~c();protected://这是一个虚函数,从QEvent继承而来.voidtimerEvent(QTimerEvent*event);privateslots:voidstartTimerSlot();voidstopTimerSlot();private:Ui::cClassui;intm_lamp;boolm_lampStatus=false;};#endif//C_H12345678910111213141516171819202122232425262728293031


最后是”main.cpp”的代码:

#include"c.h"#include<QtWidgets/QApplication>intmain(intargc,char*argv[]){QApplicationa(argc,argv);cw;w.show();returna.exec();}