【问题标题】:How to display blinking [animate] red/green status icon in qt如何在qt中显示闪烁的[动画]红色/绿色状态图标
【发布时间】:2016-05-03 08:40:52
【问题描述】:

我想在 Qt C++ 应用程序中显示红色动画闪烁图标。

设置变量时显示红色闪烁图标,清除变量时显示绿色闪烁图标。

如果断开连接,这将持续 - 闪烁红色图标,连接 - 闪烁绿色图标。

谁能告诉我如何显示它。

【问题讨论】:

  • 显示图像的方法有很多种。例如QLabel::setPixmap。你的问题太宽泛了。缩小问题。你到底有什么问题?
  • 能否提供一个示例代码来显示动画图像[不是普通图像]
  • 这个动画图片的格式是什么?
  • 任何应该与 Qt 应用程序一起工作的东西
  • 那么您只需要遵循 jpo38 提供的答案即可。使用计时器来控制闪烁,并使用一些变量来检查它应该是绿色还是红色。

标签: c++ qt animation


【解决方案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
猜你喜欢
  • 2013-03-04
  • 2020-10-08
  • 1970-01-01
  • 2011-03-09
  • 2021-12-17
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多