我有一个Qt(4.7.4)应用程序,它是其他应用程序的图形终端。 在QML中,我使用(命名)控件定义了视图。 在C ++中,我从应用程序接收命令,这些命令要求显示具有指定控件值的视图。当命令出现时,我使用类似
的东西myView = LoadTheNewViewIntoLoader(viewName);
QObject* ctrl = myView->findChild<QObject*>(ctrlName);
if(ctrl)
{
ctrl->setProperty("caption", newCaption);
}
更新控制值(即更改文本,图像或其他内容)。
问题:这样的操作有多快?或者:我如何确保所有属性都已应用于控件?
问题是在C ++中我为加载视图和设置所有属性的操作创建了一个信号量,但是当压力测试期间有很多命令出现时,我感觉这些值没有足够的时间来传播从C ++到QML,当我执行下一个命令时,之前的操作仍在执行。在这种情况下,控件会在屏幕上消失一段时间,有时甚至会出现分段错误。对于具有大量控件的更复杂的屏幕,这更容易实现。
答案 0 :(得分:0)
解除设计的性能/负载处理。
使用SLOTS,SIGNALS
让C ++处理逻辑和Qml控件,查看器
喜欢的东西 myView = LoadTheNewViewIntoLoader(viewName);
QObject* ctrl = myView->findChild<QObject*>(ctrlName);
if (ctrl)
{
emit sgnShowcaption("newCaption");
}
处理qml这个信号 并设定 .label = str(str应该在你捕获的信号中)