PavelK
@PavelK

Как заставить обновиться qml компонент при долгих вычислениях?

Приветствую!
С qml взаимодействую из c++.
В общем в qml хочу перед долгими вычислениями изменить некоторое свойство компонента, к примеру цвет Rectangle.
Так вот при setProperty("color", "red"); цвет меняется только после заверения долгих вычислений.
Если их убрать естественно всё ок.
Повторюсь, свойство я изменяю со стороны с++ а не внутри qml.
Т.е. интерфейс как бы подвисает на некоторое время.
К примеру, код:
engine.rootObjects().at(0)->findChild<QObject*>("myRect")->setProperty("color", "red");

    qlonglong l = 1;
    while (l<1000000000000) {
        l+=1;
    }


Как можно просто обновить после установки свойств, но не перенося в другой поток ?
Что-то типо функции waitForRedraw =)
Подскажите, как можно перерисовать
  • Вопрос задан
  • 710 просмотров
Решения вопроса 1
PavelK
@PavelK Автор вопроса
Пфф. Сам нашёл =) QGuiApplication::processEvents();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Долгие вычисления всегда следует запускать в отдельном потоке.
В вашем случае, например через
doc.qt.io/qt-5.5/qtconcurrentrun.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы