2012-06-05 72 views
0

Hy Qt主..qt延遲關閉pixmap

我想讓我的標籤(pixmap)關閉關閉,很快,我該​​怎麼做?

我已經嘗試使用此代碼:

Sleeper::sleep(2); 
    ui->label->setPixmap(QPixmap("C:/Users/EVAN/Pictures/New folder/85.png")); 
    Sleeper::sleep(2); 
    ui->label->setPixmap(QPixmap("C:/Users/EVAN/Pictures/New folder/87.png")); 
    Sleeper::sleep(2); 
    ui->label->setPixmap(QPixmap("C:/Users/EVAN/Pictures/New folder/85.png")); 
    Sleeper::sleep(2); 
    ui->label->setPixmap(QPixmap("C:/Users/EVAN/Pictures/New folder/87.png")); 

是不工作?我怎麼解決這個問題?感謝所有


這就是問題所在:

if(I==4) 
     { 
      QTimer *timer1 = new QTimer(this); 
      connect(timer1, SIGNAL(timeout()), this, SLOT(OnTimer())); 
      timer1->start(1000); 
      blink=true; 
      port->write(send); 
     } 
else if(I==5) 
     { 
      ui->label->setPixmap(QPixmap("../../picture/green.png")); 
      port->write(send); 
     } 

............................. ...............

void traffic1::OnTimer() 
{ 

     ui->label->setPixmap(QPixmap(blink ? "../../picture/dark.png" : "../../picture/yellow.png")); 
     blink = !blink; 

} 

當I = 4時,Qtimer正常運行,但是當I = 5 Qtimer仍然有效時。

回答

2

第一添加一個布爾成員變量等bool blink;,創建QTimer和連接它的timeout()信號到一個槽函數象下面這樣:

// constructor: 
YourClass::YourClass() 
{ 
     QTimer *timer = new QTimer(this); 
     connect(timer, SIGNAL(timeout()), this, SLOT(OnTimer())); 
     timer->start(1000); 
     blink = false; 
} 

........

void YourClass::OnTimer() 
{ 
    ui->label->setPixmap(QPixmap(blink ? "C:/Users/EVAN/Pictures/New folder/85.png" : "C:/Users/EVAN/Pictures/New folder/87.png")); 
    blink = !blink; 
} 

編輯:如果你想控制你的計時器,你應該首先在類的頭文件中聲明它

class YourClass 
{ 
    QTimer *timer; 
    ... 
}; 

,當你要創建它:停止它

YourClass::YourClass() 
{ 
     timer = new QTimer(this); 
     connect(timer, SIGNAL(timeout()), this, SLOT(OnTimer())); 
     timer->start(1000); 
     blink = false; 
} 

timer->stop(); 
+0

謝謝大家的響應速度快,它的工作以及.. – Majapahit

+0

@Majapahit如果這個答案解決你的問題(當然確實如此),那麼請善待,接受答案。 –

+0

@FlielixGalindoAllué是的,它解決了,但有一些小姐我仍然混淆,以阻止該Qtimer。 我寫在頂部。 – Majapahit