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.當定時時間超過設定的最大秒數時,定時器停止。

程序運行效果如下:

QProgressBar設置如下:

QProgressBar的數值範圍爲0-100,初始值(value)爲0,顯示格式是%ps(%p代表當前value值,s代表顯示後綴,在本例中就是xxs)

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章