解决QT程序CPU占用率高(setStyleSheet)

来源:互联网 发布:公交车gps数据 编辑:程序博客网 时间:2024/06/05 19:41

本人在利用QT Creater开发显示屏界面程序时,发现界面的CPU占用率达到了百分之95以上,极有可能出现程序崩溃的现象。通过前辈的指导和实验发现了其中的原因:本人利用label的颜色来实时更新不同的设备状态,label控件的颜色设置函数选择了setStyleSheet,由于定时器中不断刷新而且刷新频率较高,而且单个页面中的setStyleSheet较多,导致了CPU占用率高。

函数原型:

QString  styleSheet () const

QString  styleSheet () const       void  setStyleSheet ( const QString & styleSheet )

调用1次setStyleSheet,执行的工作如下: 
(1)清空原先样式,将所有新的setStyleSheet放到查询表中。 (快) 
(2)对已经创建的Widget设置样式,有用图则读图。(慢) 
在setStyleSheet 后创建的Widget将会读取父控件的setStyleSheet并按setStyleSheet的执行流程工作。 
重复调用setStyleSheet,会造成耗费双倍的时间在样式上。

解决办法:

用调色板QPalette,而设置最重要的就是setBrush()画刷。

例如:

使用setStyleSheet设置背景颜色:

 ui ->label->setStyleSheet("background-color: rgb(0, 255,0);");          //设为绿色

使用调色板QPalette来设置控件的颜色:

 palette.setBrush(ui ->label->backgroundRole(),QBrush(Qt::green));
 ui ->label->setPalette(palette);
 ui ->label->setAutoFillBackground(true);

通过测试,CPU使用率下降到了百分之20,不同机器配置差距不同。

原创粉丝点击