C ++到QML - 设置属性

时间:2014-02-18 17:09:23

标签: c++ qt qml

我有一个Qt(4.7.4)应用程序,它是其他应用程序的图形终端。 在QML中,我使用(命名)控件定义了视图。 在C ++中,我从应用程序接收命令,这些命令要求显示具有指定控件值的视图。当命令出现时,我使用类似

的东西
myView = LoadTheNewViewIntoLoader(viewName);
QObject* ctrl = myView->findChild<QObject*>(ctrlName);
if(ctrl)
{
  ctrl->setProperty("caption", newCaption);
}

更新控制值(即更改文本,图像或其他内容)。

问题:这样的操作有多快?或者:我如何确保所有属性都已应用于控件?

问题是在C ++中我为加载视图和设置所有属性的操作创建了一个信号量,但是当压力测试期间有很多命令出现时,我感觉这些值没有足够的时间来传播从C ++到QML,当我执行下一个命令时,之前的操作仍在执行。在这种情况下,控件会在屏幕上消失一段时间,有时甚至会出现分段错误。对于具有大量控件的更复杂的屏幕,这更容易实现。

1 个答案:

答案 0 :(得分:0)

解除设计的性能/负载处理。

使用SLOTS,SIGNALS

让C ++处理逻辑和Qml控件,查看器

喜欢的东西     myView = LoadTheNewViewIntoLoader(viewName);

QObject* ctrl = myView->findChild<QObject*>(ctrlName);

if (ctrl)
{
    emit sgnShowcaption("newCaption");
}

处理qml这个信号 并设定 .label = str(str应该在你捕获的信号中)