Make a QLabel blink

Make a QLabel blink

本文关键字:blink QLabel Make      更新时间:2023-10-16

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

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

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

我想使用 QTimer 每秒调用 blink() 函数,但我不知道 blink() 函数中的代码应该是什么。我希望有人能提供帮助,因为我已经在一段时间内与这个问题作斗争了。

在 GIF 文件中创建闪烁动画。

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

如下所示:

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

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

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

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

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

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

在类中使用布尔成员isQLabelVisible

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

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