重要函数:
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()
{
}
void c::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;
}
}
}
void c::startTimerSlot()
{
//设置定时器,返回一个timerld.注意单位为毫秒,1000毫秒等于1秒.
this->m_lamp = this->startTimer(1000);
}
void c::stopTimerSlot()
{
//停止定时器.
this->killTimer(this->m_lamp);
}
以下是”c.h”的代码:
#ifndef C_H
#define C_H
#include <QtWidgets/QMainWindow>
#include "ui_c.h"
#include <QLabel>
#include <QTimerEvent>
class c : public QMainWindow
{
Q_OBJECT
public:
c(QWidget *parent = 0);
~c();
protected:
//这是一个虚函数,从QEvent继承而来.
void timerEvent(QTimerEvent*event);
private slots:
void startTimerSlot();
void stopTimerSlot();
private:
Ui::cClass ui;
int m_lamp;
bool m_lampStatus = false;
};
#endif // C_H
最后是”main.cpp”的代码:
#include "c.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
c w;
w.show();
return a.exec();
}