使用我目前拥有的系统,每次加载新文件时,我必须运行QAction::setIcon大约30次。这是用来填充打开的菜单。
setIcon的每一次调用都在25 is左右,在切换文件时会导致极其恼人的半秒延迟。
我已经尝试将菜单填充移动到另一个线程,这很好,但是我在控制台中获得了QObject::startTimer: Timers cannot be started from another thread,因为QWidgets不适合在任何线程中使用,只能在GUI线程中使用。
我认为延迟是因为每个调用都复制了图标,因为QAction将QIcon存储为一个值。
相关的行是这里。有趣的是,在我的程序中的另一个地方,setIcon被调用了,而且它只慢了一次,不知怎么的,它被缓存在每个后续调用(这里)中。
有什么建议吗?我已经试过了我能想到的一切。
发布于 2022-01-18 01:32:34
查看QPixmapCache并将您的图标存储在像素地图中。从一个QIcon构建一个QPixmap非常简单。看看这个QIcon构造函数。您可以将QPixmap放在那里,因为构造函数无论如何都是隐式的。这应该会加快速度。
https://stackoverflow.com/questions/70748217
复制相似问题