我正在用QML构建一个UI,现在只处理UI逻辑,将应用程序逻辑留待以后使用。我有点担心我在多线程和异步与同步代码以及UI缓慢方面所讨论的所有讨论,我想确保在以后添加应用程序逻辑时,QML不会通过以某种方式强制使用单线程异步代码来阻止我并让我失望。
也许这听起来很荒谬,但我知道我对非网页GUI工作很陌生。我来自JS的可爱世界,其中所有UI事件都是异步和非阻塞的。
有没有人有这方面的经验,无论是python还是C ++?
答案 0 :(得分:3)
在这里,您可以找到几乎准备好的答案:https://stackoverflow.com/a/16037815/867349
简而言之,您可以在QML端使用WorkerScript ,而您在JavaScript / QML中完成的所有功能都非常不同(但不幸的是,我无法找到丢弃/停止单独的方法工人线程)。
其他选择使用Qt的QThread
。在这里阅读Qt中的多线程:Multithreading Technologies in Qt | QtDoc 5.3,Threading Basics | QtDoc 5.3和我最喜欢的关于Qt的书,这对你的案例非常有用:Advanced Qt Programming: Creating Great Software with C++ and Qt 4)。然后将您的线程暴露给QML。阅读有关在此处向CML公开C ++类的信息:Integrating QML and C++ | QtQml 5.3,Defining QML Types from C++ | QtQml 5.3。