QTimer在界面中不可见,在UI设计器中也找不到它,只能通过纯代码实现,主要作用是定时特定的时间。
想要掌握QTimer只需掌握setInterval(设置定时时间,单位ms)、start(启动定时器),和定时时间到时所发出的信号timeout()即可。程序设计的思路:
1.先设定定时周期
2.绑定timeout()信号到自定义槽函数
3.调用start函数启动定时器
下面是widget窗口类中的定义:
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
QTimer *tim;
public slots:
void onTimeOut();
};
在这里定义了一个QTimer,还定义了槽函数onTimeOut(),作为timeout信号所对应的槽函数。
窗口类的构造函数中的代码如下:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
tim = new QTimer();
tim->setInterval(1000);
connect(tim,SIGNAL(timeout()),this,SLOT(onTimeOut()));
tim->start();
}
在本例中先是设置定时器的定时周期为1s,后面又进行了信号与槽的绑定,最后是启动定时器。
定时器处理函数中的代码如下:
void Widget::onTimeOut()
{
static int value = 0;
ui->progressBar->setValue(value++);
if(value > 100)
tim->stop();
}
这段代码是在QProgressBar中显示定时秒数,秒数范围是0-100.当定时时间超过设定的最大秒数时,定时器停止。
程序运行效果如下:
QProgressBar设置如下:
QProgressBar的数值范围为0-100,初始值(value)为0,显示格式是%ps(%p代表当前value值,s代表显示后缀,在本例中就是xxs)