【发布时间】:2022-01-18 09:32:34
【问题描述】:
使用我目前的系统,每次加载新文件时,我都必须运行 QAction::setIcon 大约三十次。这是用于填充打开的菜单。
setIcon 的每次调用大约需要 25 毫秒,导致切换文件时出现极其烦人的半秒延迟。
我尝试将菜单填充移到另一个线程,效果很好,但我在控制台中得到QObject::startTimer: Timers cannot be started from another thread,因为 QWidgets 不打算用于除 GUI 线程之外的任何线程。
我认为延迟是因为每次调用都会复制图标,因为QAction 将QIcon 存储为一个值。
相关行是here。有趣的是,在我的程序的另一个地方,调用了 setIcon,它只慢了一次,不知何故在每次后续调用中被缓存(here)。
有什么建议吗?我已经尝试了所有我能想到的。
【问题讨论】:
-
您可以在应用程序启动期间创建和存储您的操作吗?
-
动作是在应用程序启动期间创建和存储的,但图标需要根据可用的处理程序打开。
标签: c++ qt optimization qtwidgets