让QLabel闪烁

时间:2014-11-17 14:51:35

标签: c++ qt qlabel

我正在使用Qt为我的beagleboard制作一个gui应用程序。

我正在尝试使用自定义图像使QLabel闪烁。

QTimer::connect(timer, SIGNAL(timeout()), this, SLOT(blink()));
timer->start(1000);

我正在考虑使用QTimer每秒调用blink()函数,但我不清楚blink()函数中的代码应该是什么。我希望有人可以提供帮助,因为我现在已经有一段时间难以解决这个问题了。

3 个答案:

答案 0 :(得分:2)

GIF文件中创建闪烁动画。

使用GIF Animator等工具创建您喜欢的任何动画。

如下所示:

auto movie = new QMovie("myblinking.gif"); 
QLabel blinklabel = new QLabel();
blinklabel->setMovie(movie);
movie->start();

答案 1 :(得分:1)

最简单的方法是隐藏并再次显示它。

Class::blink()
{
    if(label->isHidden())
        label->show();
    else
        label->hide();
}

这种方法很好,因为您不需要反复设置图像,只需显示/隐藏它(设置空像素图或设置图像每秒都不是有效的方法)。

如果您使用布局,那么它可以真正打破您的布局,因此您可以将QStackedWidget与imageLabel和空标签一起使用并每秒更改一次。我认为它仍然比设置空像素图或每秒设置图像更好。选择最适合你的。

http://qt-project.org/doc/qt-4.8/qstackedwidget.html

答案 2 :(得分:0)

在班级中使用bool成员isQLabelVisible

Class::blink() {
    if(isQLabelVisible) {
        doHideQLabel();
        isQLabelVisible = false;
    } else {
        doShowQLabel();
        isQLabelVisible = true;
    }
}

void Class::doHideQLabel() {
    [...]
}

void Class::doShowQLabel() {
    [...]
}

您有一个良好解决方案的起点。现在,要实现do{Hide,Show}QLabel(),请阅读this question的答案,并确定哪一个最符合您的需求。