分享

据说Qt的QSS性能很拉胯?加载效率很低?

 芥子c1yw3tb42g 2023-10-18 发布于陕西

最近网红6.5大侠和kuma大师做了测试,得出以下结论:

顺便和大家汇报个今天重大发现,qss在qt5.12.5版本前和之后,有重大速度变化,一样的qss文件,5.12.5以后速度性能下降十倍,比如5.14 5.15 6.1 6.3,qt6更糟糕,都是release。

5.12.11以后也是这个速度

性能差距就在 qApp->setStyleSheet(qss);

界面越多,差距指数级增长

但是换成5.12.5之前的低版本(eg.5.7)溜得起飞

还是painter好很多,怪不得UOS推荐而且强制painter禁用qss

频繁改变的图片按钮或变色按钮,最好使用自绘不要使用样式

频繁改变颜色之类 肯定不qss

6.2和5.12.2的代码对比,切换样式表,会有这样的差异。

不知道为什么这么做,按照以往的经验,样式表应用的时候已经具体到指定QWidget*,再获取一遍children重设样式的意义呢

从这段代码和堆栈看,QStyleSheetStyle会缓存那些生效果样式的widget列表。早期的版本,只会对这些缓存的widget发送新的事件。而之后的版本,还对这些widget的children做同样的逻辑,你看updateObjects的参数,就没区分是不是QWidget,至少会有一层递归调用。如果QWidget父子嵌套过多,递归很深啊

果然,假设有一个按钮外层嵌套了6层QFrame,算上按钮总共7个QWidget。也就是QStyle里至少缓存了7个对象。然后重设的时候。每一个都触发一次stylechange事件。每个又递归调用到最后一层,单一个按钮至少产生了8个stylechange事件,可怕

而5.12.2,测试按钮只有1次事件。
这样算下来,因为这个对象列表是从外部传进来的,递归调用的时候根本没有判断是不是已经处理过了。这7个widget嵌套,本来只需要产生7个事件,现在要7+6+5+4+3+2+1=28个

Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的(很多嵌入式板子还是用Qt4.8),其实该版本是和Qt5.5差不多时间发布的。参考链接 https://www./blog/2015/05/26/qt-4-8-7-released https://blog./blog/2015/07/01/qt-5-5-released/
Qt5.6.3最最后支持xp系统的长期支持版本,Qt5.7.0是最后支持xp系统的非长期支持版本。
Qt5.12.3是最后提供mysql数据库插件的版本,往后的版本需要自行编译对应的mysql数据库插件,官方安装包不再提供。
Qt5.12.5是最后样式表性能最高的版本,经过酷码大佬查阅代码发现此后版本的样式表源码中为了修复一个bug做了循环嵌套设置,导致性能急剧下降,界面越多性能暴降10倍以上。
Qt5.14.2是最后提供二进制安装包的版本,后面的版本都需要在线安装。
Qt5.15系列是最后支持win7的版本,后面的Qt6系列版本需要更改源码编译才能支持,这对于小白来说难于上青天。
 

Qt一共有几百个版本,关于如何选择Qt版本的问题,我一般保留四个版本,为了兼容Qt4用4.8.7,最后的支持XP的版本5.7.0,最新的长期支持版本比如5.15,最高的新版本比如5.15.2。强烈不建议使用4.7以前和5.0到5.3之间的版本(Qt6.0到Qt6.2之间、不含6.2的版本也不建议,很多模块还没有集成),太多bug和坑,稳定性和兼容性相比于之后的版本相当差,能换就换,不能换睡服领导也要换。如果没有历史包袱建议用5.15.2,目前新推出的6.0版本也强烈不建议使用,官方还在整合当中,好多类和模块暂时没有整合,需要等到6.2.2版本再用。

-------------------其他人的测评---------------------------

1、KDAB 

https://www./say-no-to-qt-style-sheets/

https://github.com/KDAB/KDDockWidgets

https://www./development-resources/qt-tools/kddockwidgets/

2、股票软件 

https://blog.csdn.net/lucyTheSlayer/article/details/106328550

说明这个qter不会写qabstractitemmodel

谁使用tablewidget来搞?

不应该是tableview吗?

先搞清楚tablewidget和tableview来吐槽

自定义tableview和qabstractTableModel

3、QSS Performance

4、博客与github

kuma

https://blog.csdn.net/eiilpux17

https://github.com/eiilpux17

6.5

https://blog.csdn.net/feiyangqingyun

https:///feiyangqingyun/QWidgetDemo

建波

https://blog.csdn.net/gongjianbo1992

https://github.com/gongjianbo/EasyQPainter

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多