2013-08-05 8 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 : 나는 당신이 QLabel에 대한 링크 예제 코드 적응 한

#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

: 다음

#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; 
}; 

모든 당신 ' 다음과 같이 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

안녕하세요, 답변 주셔서 감사합니다. 편집 해주세요. 그것들은 내 소스 파일이고, 내 UI의 스크린 샷이 있습니다. "label"과 "label_2"에 링크되도록하려면 소스 파일에 무엇을 넣어야합니까? 다시 한 번 감사드립니다! – user2653112

+0

QLabel에서 이미지를 대체하는 방법을 반영하여 내 대답을 업데이트했습니다. –