请教嵌入式 Qt 框架 QGraphicsView 刷新非常耗 CPU 的问题

bruce_nie 2011-11-30 11:51:43
是否有高人使用过 嵌入式平台上QGraphicsView 框架?调试跟踪发现刷新 QGraphicsView 的 item 会触发 paintEvent
自绘函数,但这个自绘过程使用了浮点,相当复杂,而且是不保留 painter 每次重绘还牵涉到了浮点矩阵运算,我将 item 最后的自绘 paint 重载直接返回,就是什么都不画,还是会吃掉很多 CPU(100 个item 每秒 5次刷新 吃掉 90%),这证明在 真正 paint 之前,CPU 就忙得不行了。我用的平台是 ARM9 + linux + Qt 4.6.3 是否这样的平台不合适用这样复杂的 QGraphicsView 这样的框架?还是有比较好的方法避免一些不必要的开销? 多谢!
...全文
1273 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinqingfly 2011-12-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bruce_nie 的回复:]
哎。。。杯具啊。 我们要求反应速度快,而且100ms 级的刷新速度。做了很多优化,改了Qt 库的东西,效率有些改善,还是不尽人意。Qt 这个 GUI 真的就这么慢吗? 特别是 QGraphicsView ?还是说需要更高能力的芯片支持?
[/Quote]
可以说说你做了些什么优化吗?
gnimgnot 2011-12-08
  • 打赏
  • 举报
回复
你的item很多么?非要用QGraphicsView ?
bruce_nie 2011-12-08
  • 打赏
  • 举报
回复
哎。。。杯具啊。 我们要求反应速度快,而且100ms 级的刷新速度。做了很多优化,改了Qt 库的东西,效率有些改善,还是不尽人意。Qt 这个 GUI 真的就这么慢吗? 特别是 QGraphicsView ?还是说需要更高能力的芯片支持?
gnimgnot 2011-12-08
  • 打赏
  • 举报
回复
QGraphicsView 要维护大量的矢量结构和他们之间的关系。

不知道你自己写一个类来维护你的矢量图形会不会节约一点
bruce_nie 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cuit 的回复:]
你的item很多么?非要用QGraphicsView ?
[/Quote]

谢谢各位的关心。
不多,其实不必要。这不是我的决定。但现在已经是。。。回头太难。
zhu_xz 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yiyaaixuexi 的回复:]

我最近遇到的问题和LZ很相似,CPU负荷大,鼠标卡的不行不行的,领导非叫我解决卡顿问题,不能提供OpenGL,我都愁了1个礼拜了 本周五的版本之前必须解决,我快疯了。
自绘过程的浮点运算肯定免不了,ARM11+Linux+Qt4.6 同样吃不消……
留个联系方式 我们交流下吧
[/Quote]
你可以参考一下Gunnar的一些blog:
http://labs.qt.nokia.com/author/gunnar/

这一篇可能非常有帮助:
http://labs.qt.nokia.com/2010/01/21/qt-graphics-and-performance-generating-content-in-threads/
念茜 2011-12-08
  • 打赏
  • 举报
回复
我最近遇到的问题和LZ很相似,CPU负荷大,鼠标卡的不行不行的,领导非叫我解决卡顿问题,不能提供OpenGL,我都愁了1个礼拜了 本周五的版本之前必须解决,我快疯了。
自绘过程的浮点运算肯定免不了,ARM11+Linux+Qt4.6 同样吃不消……
留个联系方式 我们交流下吧
zhu_xz 2011-12-07
  • 打赏
  • 举报
回复
Use OpenGL for rendering ;)
QGLWidget *glWidget = new QGLWidget;
QGraphicsView *graphicsView = QGraphicsView;
graphicsView->setViewport(glWidget);
xinqingfly 2011-12-07
  • 打赏
  • 举报
回复
up 我发现在对QGraphicsView缩放后刷新item会增加cpu占用
内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。

21,496

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧