Qt之QTimer(定时器)

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.当定时时间超过设定的最大秒数时,定时器停止。

程序运行效果如下:

Qt之QTimer(定时器)_第1张图片

QProgressBar设置如下:

Qt之QTimer(定时器)_第2张图片

QProgressBar的数值范围为0-100,初始值(value)为0,显示格式是%ps(%p代表当前value值,s代表显示后缀,在本例中就是xxs)

 

 

 

 

你可能感兴趣的:(Qt之QTimer(定时器))