如何使用C++后端将Qt QML移植到Web服务器上

6

我能否使用QML编写应用程序的前端,使用C++编写后端,并以某种方式进行编译,以便我可以将其部署到像Apache或JBoss这样的Web服务器上,以便可以从Web浏览器中访问?

如果可以,请问是否有任何示例可以执行此操作?

非常感谢您的回答 :)

我曾尝试在互联网上寻找答案,但没有成功。

3个回答

4

QmlWeb是一个JavaScript库,能够解析QML代码,并使用普通的HTML / DOM元素和CSS中的绝对位置创建网站,将QML属性翻译成CSS属性。

QmlWeb是由Lauri Paimen主要开发了几年的小型项目,现在是由Anton Kreuzkamp维护的KDE项目。

当然,QmlWeb还不支持Qt的QML实现的所有功能,但它已经支持了相当可用的子集。它支持几乎所有基本的QML语法。此外,它还支持HTML输入元素(当前支持Button、TextInput、TextArea等,将来会支持更多)。

嗯,QmlWeb还没有完成。我希望Digia能够帮助这个项目进行完善并具备成熟的功能。


3

这段javascript代码目前在v8引擎上运行,用于表达复杂的绑定和一些(最好是小型的)客户端逻辑。但引擎可能会改变(http://blog.qt.digia.com/blog/2013/04/15/evolution-of-the-qml-engine-part-1/)。

就像在浏览器中一样,实际图形与javascript有点正交,它只能与已经存在的图形对象进行交互(或实例化)。在浏览器中,图形由html/css/svg/dom描述,并由用C++编写的Web引擎解释。在QtQuick中,图形是用Qml编写的,并由用C++编写的qml引擎(scengraph)解释。

这两个堆栈完全不同。

除了Html画布和Qml画布(几乎共享相同的api)之外。但这些都是以立即模式工作的图形(与以保留模式方式工作的SVG或Qml场景图相对)。


话虽如此...

有三种尝试将Qml移植到Web上:

  • Qt移植到Google Nacl(很久以前就没有听说过了,很可能已经死亡)
  • 通过Emscripten/asm.js进行Qt端口(令人惊叹的项目,但不适用于生产,我认为QtQuick甚至都没有得到支持...可能需要巨大的努力才能得到积极维护)
  • QmlWeb(JavaScript api翻译Qml文件并在HTML5堆栈之上解释这些文件)。正在进行中,长期内可能仅支持QtQuick生态系统的子集。但仍然是一个非常有趣的项目,也许是所有三个项目中最有前途的。至少,它是最年轻的一个,并且可能会得到KDE社区的关注。http://akreuzkamp.de/2013/07/10/webapps-written-in-qml-not-far-from-reality-anymore/

您可能还对其他基于Web堆栈的场景图技术感兴趣(amino、cake.js、rapahel.js等)。

最后但并非最不重要的,您可能会对Wt(http://www.webtoolkit.eu/wt)感兴趣。

0
不行。您不能编译QML,也无法将其部署到像JBoss这样的Java应用服务器上。 QML严格用于创建在本地计算机上运行的应用程序。听起来您想使用类似.Net的后端构建一个HTML的Web应用程序。

我的想法基于qt和javascript之间的互操作性,因此我认为可以像gwt一样以某种方式使用它。还有javacode编译成javascript,这个javascript与java后端通信。它不必是java应用服务器 :) - Reshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接