Совместим ли QML с многопоточными / асинхронными вызовами?



Я создаю пользовательский интерфейс в QML и пока работаю только над логикой пользовательского интерфейса, оставляя логику приложений на потом. Я несколько обеспокоен всеми обсуждениями, которые я пропустил, касающимися многопоточности и асинхронности по сравнению с синхронным кодом и медлительностью в UIs, и я хочу убедиться, что когда логика приложения будет добавлена позже, QML не будет удерживать меня и замедлять меня, заставляя однопоточный асинхронный код каким-то образом.



Возможно, это звучит смешно, но поймите, я совершенно новичок в работе без веб-интерфейса. Я пришел из прекрасного мира JS, где все события пользовательского интерфейса асинхронны и не блокируются.



Есть ли у кого-нибудь опыт работы с этим в python или C++?

532   1  

1 ответ:

Здесь вы можете найти почти готовый для вас ответ: https://stackoverflow.com/a/16037815/867349

В нескольких словах, Вы можете использовать WorkerScript на стороне QML со всей вашей функциональностью, выполненной в JavaScript/QML действительно asynchrounous (но, к сожалению, я не могу найти способ удалить/остановить этот отдельный рабочий поток).

Другой выбор - использовать Qt'SQThread'S . Читайте о многопоточности в Qt здесь: технологии многопоточности в Qt | QtDoc 5.3 , Threading Basics | QtDoc 5.3 и моя любимая книга по Qt, которая может быть очень полезной в вашем случае: Advanced Qt Programming: Creating Great Software with C++ and Qt 4). Затем предоставьте свои потоки QML. О том, как использовать классы C++ для QML, читайте здесь: интеграция QML и C++ / QtQml 5.3, определение типов QML из C++ | QtQml 5.3 .

Comments

    Ничего не найдено.