我正在使用Qt为我的beagleboard制作一个gui应用程序。
我正在试着用自定义图像使QLabel闪烁。
QTimer::connect(timer, SIGNAL(timeout()), this, SLOT(blink()));
timer->start(1000);我正在考虑使用QTimer每秒调用一次blink()函数,但我不知道blink()函数中的代码应该是什么。我希望有人能帮助我,因为我现在已经有一段时间在这个问题上挣扎了。
发布于 2017-10-18 02:04:47
在GIF文件中创建闪烁的动画。
使用GIF Animator等工具创建您喜欢的任何动画。
如下所示:
auto movie = new QMovie("myblinking.gif");
QLabel blinklabel = new QLabel();
blinklabel->setMovie(movie);
movie->start();发布于 2014-11-17 22:55:21
最简单的方法是隐藏并再次显示它。
Class::blink()
{
if(label->isHidden())
label->show();
else
label->hide();
}这种方法很好,因为你不需要一次又一次地设置图像,只需显示/隐藏它(设置空像素图或每秒设置图像不是有效的方法)。
如果你使用layout,那么它真的会破坏你的布局,所以你可以使用带有imageLabel和空标签的QStackedWidget,并且每秒更改一次。我认为这仍然比设置空像素图或每秒设置图像要好。选择最适合你的。
http://qt-project.org/doc/qt-4.8/qstackedwidget.html
发布于 2014-11-17 23:00:47
在类中使用布尔成员isQLabelVisible
Class::blink() {
if(isQLabelVisible) {
doHideQLabel();
isQLabelVisible = false;
} else {
doShowQLabel();
isQLabelVisible = true;
}
}
void Class::doHideQLabel() {
[...]
}
void Class::doShowQLabel() {
[...]
}你有一个好的解决方案的起点。现在,为了实现do{Hide,Show}QLabel(),请阅读来自this question的答案,并决定哪一个最适合您的需求。
https://stackoverflow.com/questions/26975329
复制相似问题