我正在开发一个QML应用程序,当我发射信号时,它消耗了大约85%的CPU
QString每隔90毫秒发送一次至QML显示屏。我们目前正在使用Qt 5.2。我正在做
让我们升级到Qt 5.9,因为现在我们不能超过5.9.9,因为一个更老的
操作系统。
到目前为止,我唯一能确定的是,它似乎是因为
我的模型中的这个QString被嵌入到QML的层次结构中
减速我还将ListView从更新项目的等式中移除
通过不在后端C++侧发出任何更改。相反,如果我移除
QString的“emit my property()”调用将CPU使用率降至5%。
我的意思是,如果我将文本{}调用移动到顶层(main.qml)
在其他条件相同的情况下,我对应用程序的CPU使用量从
85%降至15%。
我的应用程序使用了4个浮动窗口,目前只实现了其中一个。
我的模式;属性位于第一个QML“窗口”对象中。
我发现如果我把那个窗口改成一个矩形,我的CPU使用率就会下降到
大约50%。
我还尝试在顶层(main.qml)和
只需在较低的“窗口”组件中使用它,基本上不需要模型说明符
而使用顶级的一级,发现它同样慢(85%)。我日子不好过
相信为1 QString更新屏幕会导致CPU混乱。
不幸的是,我不能发布代码,因为它是专有的,但这里是
它看起来像什么的基本轮廓(不是真正的代码)。
我很感激任何人对这种情况的建议或知识。我花了一点时间
时间在网上寻找线索,但还没有找到真正的解决方案。
非常感谢。
主要的qml
ApplicationWindow
{
Rectangle
{
Row
{
FirstWindowButton {}
SecondWindowButton {}
ThirdWindowButton {}
ForthWindowButton {}
}
}
}
第一个窗口按钮。qml:
Button
{
Loader
{
sourceComponent: Window
{
flags: Qt.Window
FirstWindow {}
}
}
}
第一个窗口。qml:
Rectangle
{
MyListView
{
}
}
MyListView。qml:
Rectangle
{
Text
{
text: theModel.string_value <----this is the slowdown line
}
ScrollView
{
ListView
{
}
}
}