我有Qt中的一些C ++和Python集成模块(机器学习,信号处理等)具有以下基本特性实现的应用:
QThread
)QwtPlotZoomer
,QwtPlotMarker
,QGraphicsRectItem
2D图(QwtPlotCurve
)可视化特性。我的目标是通过与多个用户,观察者的web浏览器应用提供服务器运行的应用程序中已实现的应用特性。我做了一些研究,并发现以下链接(Wt,link,link和link)一些可能的解决方案(Qt的WebGL的,QT的大会,link),但作为一个没有经验的Web应用程序开发人员,我不能完全肯定它的这些或替代的和优选的C++
模块使用。
能否请您提供巫Web开发库的一些建议和指导使用基于类的成熟度,功能特性,易用性和成熟度(灵活性Qt控件),但也考虑到我的应用程序的特点是什么?
先感谢您。
PS:我想提一提,如果它帮助我用C很有经验++和Python的不是Java和Javascript。
如果你想使一个应用程序,可以服务器的多个客户端使用Qt,有3个常规选项:
这其中将创建一个纯服务器双面执行和简单地在浏览器远程显示GUI。这似乎是最简单的方法,但有一些限制和缺点:
总之这种方法从未被设计用于这种用途的情况。它是指能够用作图形用户界面的无头装置或maintanance访问。我不建议使用它。
一分为二的应用:服务器应用程序和客户端应用程序。使用Qt的WebAssembly客户端应用程序。两者之间的通信可以与QtWebSockets
,QtRemoteObjects
或其他网络的IPC解决方案来完成。
这使您不必只使用一种语言上的优势,并使得IPC很容易,因为双方使用Qt。此外,测算重任务中WASM有效得多。但是Qt的用于WebAssembly仍处于技术预览版状态,因此尚未稳定。例如,它不支持多线程或TCP / IP套接字呢。此外,并非所有enddevices支持WASM截至目前。
最后一种方法是混合技术。使用Web框架状Cutelyst创建一个基于Qt的网络服务器和服务于传统的HTML网站与它。您可以使用QtWebChannel轻松地将Qt的服务器和HTML客户端之间传输数据。
一个WASM和HTML客户端之间的决定权在你。使用WASM可能会容易些,但有它自己的challanges。我会建议你做一些更多的研制上都。然后创建两个解决方案的一些测试应用程序并加以比较,找出哪一个适合您的需求最好的
真的,我觉得只有一个主要的事情:如果它开始崩溃,你可能需要其中之一:
https://doc.qt.io/qt-5/qmutex.html
至于网页脚本,我倾向于使用QWebEnginePage::runJavaScript()
提供的警告,这是不容易的。其原因是,是从C ++注入的JavaScript时,你正在处理从C ++,这使得时间和代码注入的点非常困难单线程线性环境。它基本上是一个竞争条件地狱,我结束了发展serviceable model
只是有运行,直到取得预期结果的脚本。
https://doc.qt.io/qt-5/qwebenginepage.html#runJavaScript
这意味着,这是很好的任务委派给强大的JavaScript应用程序。
最后,因为你是使用Qt的工作,这是好事,制定了“创建每件事情都作为API”的心态。