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)