Совместим ли QML с многопоточными / асинхронными вызовами?
Я создаю пользовательский интерфейс в QML и пока работаю только над логикой пользовательского интерфейса, оставляя логику приложений на потом. Я несколько обеспокоен всеми обсуждениями, которые я пропустил, касающимися многопоточности и асинхронности по сравнению с синхронным кодом и медлительностью в UIs, и я хочу убедиться, что когда логика приложения будет добавлена позже, QML не будет удерживать меня и замедлять меня, заставляя однопоточный асинхронный код каким-то образом.
Возможно, это звучит смешно, но поймите, я совершенно новичок в работе без веб-интерфейса. Я пришел из прекрасного мира JS, где все события пользовательского интерфейса асинхронны и не блокируются.
Есть ли у кого-нибудь опыт работы с этим в python или C++?
1 ответ:
Здесь вы можете найти почти готовый для вас ответ: https://stackoverflow.com/a/16037815/867349
В нескольких словах, Вы можете использовать WorkerScript на стороне QML со всей вашей функциональностью, выполненной в JavaScript/QML действительно asynchrounous (но, к сожалению, я не могу найти способ удалить/остановить этот отдельный рабочий поток).
Другой выбор - использовать Qt'S
QThread'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