|
|
在Qt開發(fā)界面的時(shí)候,非常多的時(shí)候都得使用定時(shí)器,定時(shí)器具體可以干什么呢?比如:QTimer控制時(shí)鐘、QTimer定時(shí)改變樣式、QTimer改變進(jìn)度等。。。說(shuō)到這里,經(jīng)常使用QQ,而不同的時(shí)段都會(huì)顯示不同的背景,我認(rèn)為如果用Qt實(shí)現(xiàn)的話,就得使用QTimer定時(shí)的獲取時(shí)間,判斷當(dāng)前時(shí)間為morning、noon、afternoon、night來(lái)改變當(dāng)前的背景。。。 雖然QTimer簡(jiǎn)單易用,但是比較耗內(nèi)存,所以在不必要的時(shí)候就必須終止它。。。
QTimer構(gòu)造:
QTimer timer = new QTimer();
QTimer設(shè)置超時(shí)并啟動(dòng):
timer->setInterval(1000);
timer->start();
或:timer->start(1000);
QTimer改變定時(shí)間隔為msec毫秒
timer->changeInterval(msec);
如果這個(gè)定時(shí)器信號(hào)是運(yùn)行的,它將會(huì)被停止并且重新開始,否則它將會(huì)被開始。
QTimer是否則正在運(yùn)行
timer->isActive()
如果定時(shí)器正在運(yùn)行,返回真,否則返回假。
QTimer停止
timer->stop();
當(dāng)達(dá)到超時(shí)時(shí)間,則發(fā)射信號(hào),執(zhí)行指定的槽函數(shù)
connect(timer, SIGNAL(timeout()), this, SLOT(myTimeout()));
以下是利用QTimer來(lái)控制一個(gè)進(jìn)度條,超時(shí)時(shí)間為1000毫秒(1秒),當(dāng)達(dá)到超時(shí)時(shí)間時(shí),進(jìn)度條增加1%,當(dāng)進(jìn)度條為100%時(shí),停止Qtimer。
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
this->setFixedSize(400, 300);
progress_value = 0;
timer = new QTimer();
timer->setInterval(1000);
timer->start();
progress_bar = new QProgressBar(this);
progress_bar->setGeometry(50, 50, 150, 20);
progress_bar->setValue(0);
connect(timer, SIGNAL(timeout()), this, SLOT(changeValue()));
}
void MyWidget::changeValue()
{
progress_value++;
if(progress_value > 100)
{
timer->stop();
}
progress_bar->setValue(progress_value);
}
效果圖:
注:
技術(shù)在于交流、溝通,轉(zhuǎn)載請(qǐng)注明出處并保持作品的完整性。
|
|