У меня есть приложение 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, и когда я выполняю следующую команду, предыдущие действия все еще выполняются. В такой ситуации элементы управления исчезают с экрана вообще в течение некоторого времени, а иногда я получаю даже разлом сегментации. Это проще для более сложных экранов с большим количеством элементов управления.
Таким образом, каждый раз, когда я найти элемент управления на текущий вид (который иногда может быть даже сто раз во время одной операции ShowView), я должен подключиться к ее слоту, а затем испустить сигнал? И это поможет моим проблемам с производительностью/стабильностью? – kappa