如何从Ubuntu HTML5 App调用Qt或本地函数?

我已经从Ubuntu SDK创建了一个HTML5应用程序。 它包含一个index.html和js目录。 接下来,我在html文件上添加“X”标签,如下所示:

 ...  #quit { background-color: gray; color: white; font-weight: bold; display: block; text-align: right; }    X ...  

想要的效果是当单击“X”标签时,将调用Qt.quit()并关闭应用程序窗口。 不幸的是,它不会。 该应用程序由“ubuntu-html5-app-launcher”启动(包含在“ubuntu-html5-theme”包中)。 那么,如何修改ubuntu-html5-app-launcher让html5应用程序和本机应用程序一样,例如,当我们点击html文件中定义的项目时关闭窗口?

仅供参考:我发现如果我从SDK中的“新文件或项目”菜单中选择“应用程序>> HTML5应用程序”模板,Qt.quit()可以通过html文件调用(通过addToJavaScript函数):

 void Html5ApplicationViewerPrivate::addToJavaScript() { m_webView->page()->mainFrame()->addToJavaScriptWindowObject("Qt", this); } 

但是“应用程序>> HTML5应用程序”类型的应用程序无法将鼠标hover和鼠标移动等一些事件传输到内置的WebView,因此,当用户将鼠标移动到html的元素上时,除非你发生任何事情,否则什么都不会发生单击元素。

所以我的问题是:

  • 如何使ubuntu-html5-app-launcher启动html5应用程序来调用html文件中的qt函数。 即如何修改ubuntu-html5-app-launcher

    要么

  • 如何使“应用程序>> HTML5应用程序”类型的应用程序将指定的事件(如鼠标移动和移动)传输到由C ++类加载的内置html文件(在我的演示中是Html5ApplicationViewerinheritanceformsQWidget)

应用程序模板不是Ubuntu Touch模板,这些模板实际上只是Qt Creator模板,您不能将它们用于Ubuntu应用程序。

当您制作Ubuntu HTML5应用程序时,您可以使用标准的JavaScript鼠标事件处理程序,如onmousemove,onmouseover和onmouseout,尽管现在这些处理程序效果不佳。 Ubuntu Touch正在快速发展,所以请密切关注更新。

编辑:使用W3C规范中指定的触摸事件处理程序

您无法从应用程序本身退出HTML5应用程序。 这不是一个真正的问题,因为如果你有机会玩Ubuntu Touch的其他应用程序,你可能已经注意到它们都没有退出按钮。 在Ubuntu上,我们的想法是您只需将应用程序拖到后台即可。

如果您想使用HTML5 UI制作C ++应用程序,您应该阅读这个问题的答案。

如果您使用默认的Qt模板创建HTML5应用程序,那么您实际上是在开发带有Webview的Qml应用程序。 您可以访问所有Qml API,但必须手动将它们与您的webview绑定。

Ubuntu HTML5应用程序模板提供的是一个为您完成的容器。 我们目前在ubuntu-html5-container中支持以下API: – Webview公开的W3C API(例如地理位置) – Unity API – Ubuntu平台API:当前的警报,在线帐户和Content Hub – Cordova API:它们允许您访问例如,相机,麦克风或获取电池状态。

当然,您也可以访问在线API,因为此应用程序类型默认具有“网络”访问权限。

您可以在以下url找到非常好的概述: http : //developer.ubuntu.com/apps/html-5/

有关HTML5应用程序可用的Platform API的详细信息,请参阅: http : //developer.ubuntu.com/api/html5/sdk-14.04/