2013-08-05 48 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上交替图像。 –