我正在使用Qt为我的beagleboard制作一个gui应用程序。
我正在尝试使用自定义图像使QLabel闪烁。
QTimer::connect(timer, SIGNAL(timeout()), this, SLOT(blink()));
timer->start(1000);
我正在考虑使用QTimer每秒调用blink()函数,但我不清楚blink()函数中的代码应该是什么。我希望有人可以提供帮助,因为我现在已经有一段时间难以解决这个问题了。
答案 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和空标签一起使用并每秒更改一次。我认为它仍然比设置空像素图或每秒设置图像更好。选择最适合你的。
答案 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的答案,并确定哪一个最符合您的需求。