【问题标题】:How to speed up QAction::setIcon如何加快 QAction::setIcon
【发布时间】:2022-01-18 09:32:34
【问题描述】:

使用我目前的系统,每次加载新文件时,我都必须运行 QAction::setIcon 大约三十次。这是用于填充打开的菜单。

setIcon 的每次调用大约需要 25 毫秒,导致切换文件时出现极其烦人的半秒延迟。

我尝试将菜单填充移到另一个线程,效果很好,但我在控制台中得到QObject::startTimer: Timers cannot be started from another thread,因为 QWidgets 不打算用于除 GUI 线程之外的任何线程。

我认为延迟是因为每次调用都会复制图标,因为QActionQIcon 存储为一个值。

相关行是here。有趣的是,在我的程序的另一个地方,调用了 setIcon,它只慢了一次,不知何故在每次后续调用中被缓存(here)。

有什么建议吗?我已经尝试了所有我能想到的。

【问题讨论】:

  • 您可以在应用程序启动期间创建和存储您的操作吗?
  • 动作是在应用程序启动期间创建和存储的,但图标需要根据可用的处理程序打开。

标签: c++ qt optimization qtwidgets


【解决方案1】:

查看QPixmapCache 并将您的图标存储在像素图中。从QPixmap 构造QIcon 非常简单。看看这个QIcon constructor。您可以将QPixmap 放在那里,因为无论如何构造函数都是隐式的。这应该会加快速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-19
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多