如何在qt中显示闪烁的[动画]红色/绿色状态图标
Posted
技术标签:
【中文标题】如何在qt中显示闪烁的[动画]红色/绿色状态图标【英文标题】:How to display blinking [animate] red/green status icon in qt 【发布时间】:2016-05-03 08:40:52 【问题描述】:我想在 Qt C++ 应用程序中显示红色动画闪烁图标。
设置变量时显示红色闪烁图标,清除变量时显示绿色闪烁图标。
如果断开连接,这将持续 - 闪烁红色图标,连接 - 闪烁绿色图标。
谁能告诉我如何显示它。
【问题讨论】:
显示图像的方法有很多种。例如QLabel::setPixmap
。你的问题太宽泛了。缩小问题。你到底有什么问题?
能否提供一个示例代码来显示动画图像[不是普通图像]
这个动画图片的格式是什么?
任何应该与 Qt 应用程序一起工作的东西
那么您只需要遵循 jpo38 提供的答案即可。使用计时器来控制闪烁,并使用一些变量来检查它应该是绿色还是红色。
【参考方案1】:
一旦您知道如何显示图像:QImage
,或QIcon
,或QPixmap
,就很容易通过闪烁使其动画:
QImage
(或QIcon
,或QPixmap
)(绿色)
创建第二个QImage
(或QIcon
,或QPixmap
)(红色)
创建并启动 QTimer 并将 timeout() 信号连接到将在前两个图像之间切换的插槽
【讨论】:
我想在特定变量集上显示一个闪烁的红色图标,当清除时显示闪烁的绿色图标 那么你肯定需要详细说明你的问题。但是,我的回答应该可以帮助您实现这一点(让红色图像闪烁,然后在完成后将其切换为不闪烁的绿色图像非常简单)。 最好不要通过timerEvent
或timeout
更新图像,而是通过信号通知更改状态
@AndreiR。除非您希望每 n 毫秒更改一次图像(让它闪烁)。【参考方案2】:
使用计时器和 QMovie 我已经解决了这个问题。
下面是更新通知栏的计时器
updateScreenTimer = new QTimer(this);
connect(updateScreenTimer, SIGNAL(timeout()), this, SLOT(update_Time_Slot()));
updateScreenTimer->start(TIME_USED_UPDATE_NOTIFICATION);
在每个 TIME_USED_UPDATE_NOTIFICATION 超时后,它会调用下面的插槽并检查变量,如果设置了变量,则启动绿色闪烁的动画 gif 图像电影。否则启动红色闪烁的动画 gif 图像。
void Notification::update_Time_Slot()
if(ConectionStatus==1)
QMovie *movie = new QMovie(":/new/prefix1/greenBlinking1.gif");
if(movie->isValid())
ui->connectionLabel->setMovie(movie);
movie->start();
ui->connectionLabel->show();
else
QMovie *movie = new QMovie(":/new/prefix1/redBlinking1.gif");
if(movie->isValid())
ui->connectionLabel->setMovie(movie);
movie->start();
ui->connectionLabel->show();
相关帖子 -> What is the best way to display an animated icon in a QTableView?
【讨论】:
当ConectionStatus
的值发生变化时,为什么不直接调用update_Time_Slot
?以上是关于如何在qt中显示闪烁的[动画]红色/绿色状态图标的主要内容,如果未能解决你的问题,请参考以下文章