如何在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() 信号连接到将在前两个图像之间切换的插槽

【讨论】:

我想在特定变量集上显示一个闪烁的红色图标,当清除时显示闪烁的绿色图标 那么你肯定需要详细说明你的问题。但是,我的回答应该可以帮助您实现这一点(让红色图像闪烁,然后在完成后将其切换为不闪烁的绿色图像非常简单)。 最好不要通过timerEventtimeout 更新图像,而是通过信号通知更改状态 @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中显示闪烁的[动画]红色/绿色状态图标的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的应用在不录制时会显示正在录制(闪烁的红色)状态栏?

关于 SVN状态图标不显示的问题(只显示绿色钩匹配) 的解决方法

SVN文件图标状态

动画更改颜色时如何更新UI

使用Axure制作图标闪烁效果

网页中如何让鼠标指针变成小手状