2013-08-05 78 views
3

![我在這裏輸入圖片描述] [1]我有兩個帶有圖像的Q標籤,我需要每隔幾秒鐘閃爍一次。Qlabel和Qtimer(需要使圖像閃爍)

我一直在尋找THROU這個例子:http://www.codeprogress.com/cpp/libraries/qt/showQtExample.php?index=357&key=QLCDNumberBlinkingClock

然而,不明白我是如何與提前QLabel

由於實現它。

+1

您鏈接的代碼非常簡單。你不明白什麼?您需要創建QTimer並將超時插槽連接到交替顯示QLabel(閃爍)的信號。 –

回答

3

創建一個QTimer,將timeout()信號連接到一個插槽,並且在插槽中您可以對QLabel執行任何操作!

myclass.h:

class MyClass : public QWidget 
{ 
    Q_OBJECT 
public: 
    explicit MyClass(QWidget *parent = 0); 

public slots: 
    void timeout(); 

private: 
    QTimer *timer; 
    QLabel *label; 

    int  counter; 
}; 

myclass.cpp:

#include "myclass.h" 

MyClass::MyClass(QWidget *parent) : 
    QWidget(parent) 
{ 
    timer = new QTimer(); 

    label = new QLabel(); 

    counter = 0; 

    connect(timer, SIGNAL(timeout()), this, SLOT(timeout())); 

    timer->start(1000); 
} 

void MyClass::timeout() 
{ 
    if(counter%2) 
     label->setText("Hello !"); 
    else 
     label->setText("Good bye..."); 
    counter++; 
} 
+0

是的,我真的不明白你想要用你的標籤做什麼,但是如果你想隱藏/顯示它們,你可以使用label-> hide();和label-> show(); setText()僅僅是一個例子。 –

1

我已經適應您鏈接到了QLabel示例代碼:

#include <QtGui> 

class BlinkLabel : public QLabel 
{ 
    Q_OBJECT 
    public : 
    BlinkLabel(QPixmap * image1, QPixmap * image2) 
    { 
    m_image1 = image1; 
    m_image2 = image2; 
    m_pTickTimer = new QTimer();  
    m_pTickTimer->start(500); 

    connect(m_pTickTimer,SIGNAL(timeout()),this,SLOT(tick())); 
    }; 
    ~BlinkLabel() 
    { 
    delete m_pTickTimer; 
    delete m_image1; 
    delete m_image2;  
    }; 

    private slots: 
    void tick() 
    { 
     if(index%2) 
     { 
     setPixMap(*m_image1); 
     index--; 
     } 
     else 
     { 
     setPixMap(*m_image2); 
     index++; 
     }  
    };  
    private: 
    QTimer* m_pTickTimer; 
    int index; 
    QPixmap* m_image1; 
    QPixmap* m_image2; 
}; 

然後你」 d需要做的是創建一個BlinkLabel的實例,如下所示:

QPixmap* image1 = new QPixmap(":/image1.png"); 
QPixmap* image2 = new QPixmap(":/image2.png"); 
BlinkLabel blinkLabel = new BlinkLabel(image1, image2); // alternates between image1 and image2 every 500 ms 
+0

嗨,謝謝你的回答,請你看看編輯。這些是我的源文件,並且有我的用戶界面的屏幕截圖,我必須在源文件中放置什麼以使其鏈接到「label」和「label_2」。再次感謝 ! – user2653112

+0

我已經更新了我的答案,以反映如何在QLabel上交替圖像。 –