如何讓Qt 的程序等待一段時間(等待的同時,還讓主界面刷新圖片)good


后面這種方法可以不影響其他線程的響應,又可以達到等待的目的。

測試的一個小例子:

 

[cpp]  view plain  copy
 
  1. class Widget : public QWidget  
  2. {  
  3.     Q_OBJECT  
  4.   
  5. public:  
  6.     Widget(QWidget *parent = 0);  
  7.     ~Widget();  
  8.   
  9.     QLabel *label;  
  10. };  
[cpp]  view plain  copy
 
  1. Widget::Widget(QWidget *parent)  
  2.     : QWidget(parent)  
  3. {  
  4.     label = new QLabel(this);  
  5.     label->resize(800,480);  
  6.     label->show();  
  7. }  
  8.   
  9. Widget::~Widget()  
  10. {  
  11.     delete label;  
  12. }  
[cpp]  view plain  copy
 
  1. #include <QPixmap>  
  2. #include <QTimer>  
  3. #include <QDebug>  
  4. #include <QThread>  
  5. #include <QEventLoop>  
  6.   
  7. int main(int argc, char *argv[])  
  8. {  
  9.     QApplication a(argc, argv);  
  10.     Widget w;  
  11.     w.show();  
  12.   
  13.     static const char *pic[4] = {   //這個數組的用法很巧妙吧  
  14.         ":/new/prefix1/pic/Bottom Panel v1.3-compare-01.png",  
  15.         ":/new/prefix1/pic/Bottom Panel v1.3-compare-02.png",  
  16.         ":/new/prefix1/pic/Bottom Panel v1.3-compare-03.png",  
  17.         ":/new/prefix1/pic/Bottom Panel v1.3-compare-04.png",  
  18.     };  
  19.   
  20.     while(1)  
  21.     {  
  22.         for(int i = 0; i < 4; i ++)  
  23.         {  
  24.             w.label->setPixmap(QPixmap(pic[i]));  
  25.             qDebug()<<"i:"<<i;  
  26.   
  27.             //QThread::sleep(2);  // 這樣寫label上的圖片就無法正常刷新,換用下面的的eventloop就OK了  
  28.             QEventLoop eventloop;  
  29.             QTimer::singleShot(2000, &eventloop, SLOT(quit())); //wait 2s  
  30.             eventloop.exec();  
  31.         }  
  32.     }  
  33.   
  34.     return a.exec();  
  35. }  
 
 

http://blog.csdn.net/zzwdkxx/article/details/47280975


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM