2014-02-18 3 views
0

У меня есть приложение Qt (4.7.4), которое является графическим терминалом для других приложений. В QML я определил Views с (named) элементами управления. В C++ я получаю команды от приложений, которые запрашивают представление с указанными значениями для моих элементов управления. Когда приходит команда, я использую нечто вродеC++ to QML - свойства настройки

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

обновить контрольное значение (т.е. изменение текста, изображения или любой другой).

Вопрос: Как быстро такая операция? Или: Как я могу быть уверен, что все свойства были применены к элементам управления?

Проблема в том, что в C++ я создаю семафор для действия загрузки представления и установки всех свойств, но когда есть много команд, приходящих во время стресс-теста, у меня возникает ощущение, что значения не имеют достаточного времени для распространяются с C++ на QML, и когда я выполняю следующую команду, предыдущие действия все еще выполняются. В такой ситуации элементы управления исчезают с экрана вообще в течение некоторого времени, а иногда я получаю даже разлом сегментации. Это проще для более сложных экранов с большим количеством элементов управления.

ответ

0

Разделите свою конструкцию на производительность и нагрузку.

Использование Слоты, СИГНАЛИЗАЦИЯ

Пусть C++ обрабатывать логику и QML элементы управления, зритель

Что-то вроде MyView = LoadTheNewViewIntoLoader (VIEWNAME);

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

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

Ручка в QML этот сигнал и установить .label = ул (ул должно быть в сигнале вы поймали)

+0

Таким образом, каждый раз, когда я найти элемент управления на текущий вид (который иногда может быть даже сто раз во время одной операции ShowView), я должен подключиться к ее слоту, а затем испустить сигнал? И это поможет моим проблемам с производительностью/стабильностью? – kappa

Смежные вопросы