首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使QLabel闪烁

使QLabel闪烁
EN

Stack Overflow用户
提问于 2014-11-17 22:51:35
回答 3查看 6.1K关注 0票数 3

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

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

代码语言:javascript
复制
QTimer::connect(timer, SIGNAL(timeout()), this, SLOT(blink()));
timer->start(1000);

我正在考虑使用QTimer每秒调用一次blink()函数,但我不知道blink()函数中的代码应该是什么。我希望有人能帮助我,因为我现在已经有一段时间在这个问题上挣扎了。

EN

回答 3

Stack Overflow用户

发布于 2017-10-18 02:04:47

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

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

如下所示:

代码语言:javascript
复制
auto movie = new QMovie("myblinking.gif"); 
QLabel blinklabel = new QLabel();
blinklabel->setMovie(movie);
movie->start();
票数 2
EN

Stack Overflow用户

发布于 2014-11-17 22:55:21

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

代码语言:javascript
复制
Class::blink()
{
    if(label->isHidden())
        label->show();
    else
        label->hide();
}

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

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

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

票数 1
EN

Stack Overflow用户

发布于 2014-11-17 23:00:47

在类中使用布尔成员isQLabelVisible

代码语言:javascript
复制
Class::blink() {
    if(isQLabelVisible) {
        doHideQLabel();
        isQLabelVisible = false;
    } else {
        doShowQLabel();
        isQLabelVisible = true;
    }
}

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

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

你有一个好的解决方案的起点。现在,为了实现do{Hide,Show}QLabel(),请阅读来自this question的答案,并决定哪一个最适合您的需求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26975329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档