1. 程式人生 > >Ubuntu QML中的WebView及HTML混合程式設計(hybrid programming)

Ubuntu QML中的WebView及HTML混合程式設計(hybrid programming)

import QtQuick 2.4
import Ubuntu.Components 1.3
import Ubuntu.Web 0.2
import com.canonical.Oxide 1.9 as Oxide

MainView {
    // objectName for functional testing purposes (autopilot-qt5)
    objectName: "mainView"

    // Note! applicationName needs to match the "name" field of the click manifest
    applicationName: "webview-oxide.liu-xiao-guo"

    property string usContext: "messaging://"

    width: units.gu(60)
    height: units.gu(85)

    Page {
        title: i18n.tr("webview-oxide")

        Rectangle {
            anchors.fill: parent

            // Both the UserScript and the call to sendMessage need to share the same
            // context, which should be in the form of a URL.  It doesn't seem to matter
            // what it is, though.
            property string usContext: "messaging://"

            WebView {
                id: webview
                anchors {
                    top: parent.top
                    left: parent.left
                    right: parent.right
                    bottom: button.top
                }
                context: webcontext
                url: {
                    console.log("address: " + Qt.resolvedUrl("index.html"))
                    return Qt.resolvedUrl("index.html")
                }
            }

            WebContext {
                id: webcontext
                userScripts: [
                    Oxide.UserScript {
                        context: usContext
                        url: Qt.resolvedUrl("oxide-user.js")
                    }
                ]
            }

            Button {
                id: button
                anchors {
                    bottom: parent.bottom
                    left: parent.left
                    right: parent.right
                }
                text: "Press Me"
                onClicked: {
                    var req = webview.rootFrame.sendMessage(usContext, "MESSAGE", {greeting: "Hello"})
                    req.onreply = function (msg) {
                        console.log("Got reply: " + msg.str);
                    }
                    req.onerror = function (code, explanation) {
                        console.log("Error " + code + ": " + explanation)
                    }
                }
            }
        }
    }
}

我們通過按鈕"button"來向我們的WebView傳送我們需要的QMLmessage事件.在這裡我們使用了:

相關推薦

Ubuntu QMLWebViewHTML混合程式設計(hybrid programming)

import QtQuick 2.4 import Ubuntu.Components 1.3 import Ubuntu.Web 0.2 import com.canonical.Oxide 1.9 as Oxide MainView { // objectName for functional

開題:在移動開發使用JavaScript進行混合程式設計提高程式碼複用率

問題 通常開發一個移動應用,因為存在iOS和Android兩種作業系統,因此所有程式碼都要使用兩種語言編寫兩遍,因此幾乎所有開發相關的人力都是需要雙倍的。Webview的使用雖然在一定程度上讓部分功能的實現可以跨平臺執行,但由於執行效率等問題,因此一般只用於開發較為簡單的功能。 挑戰 嘗

AndroidWebView載入Html的圖片新增點選事件

    基本的思路: (1)WebView來載入HTML。 (2)向HTML中注入JavaScript,利用JavaScript來呼叫Android中的方法(執行一些跳轉的操作等等)。  首先你必須有一個HTML或者是一個地址,或者是存到本地的一個檔案。我這裡使用的是存到本

thymeleafjshtml特殊符號的轉義問題

html中如果你寫了一個這樣的語句: <h5>上傳檔案地址:${fileUrl}</h5> 其效果是當model中取到了fileUrl則會顯示具體內容,但沒有值的時候也顯示出${fileUrl},並不妥當。 這時候你改成如下的語句問題就解決了: &l

Qt C++與QML混合程式設計(2)- QML使用C++的列舉、結構體、列表型別的函式

C++中返回函式返回的列舉型別、結構體型別、列表型別的函式是不能直接作為QML使用的。下面介紹C++中使用這些型別作為返回值的函式使用。 1. 使用列舉型別 C++的列舉型別如果要在QML中使用,需要在使用Q_ENUMS去修飾這個列舉型別。

Qt C++與QML混合程式設計(1)- QML使用C++的類和函式

本章主要介紹一下在QML中使用C++的類的兩種方法 1.設定QML的上下文屬性 為QML的節點設定上線屬性,在QML檔案中可以之間使用這個屬性的函式。 QQuickView view; view.rootContext()->setCo

QML與C++混合程式設計(二):QML獲得C++類的屬性

QML獲得C++類中的屬性   QML可以輕鬆地用C++中定義的功能進行擴充套件。由於QML引擎和Qt元物件系統的緊密結合,QML可以獲取任意QObject派生類中的功能,這使得QML可以通過一些小的改動直接獲得C++中的資料和方法。   QML引擎可以通過

CSSHTML、js的資源路徑問題

stat 文件中 bsp ng- 層級 png 目的 指令 php 路徑 分為相對路徑和絕對路徑 一、相對路徑。 相對於文件本身的路徑。 用 ./ 表示同一文件夾下的兄弟文件。 用../ 表示所處文件夾的父文件夾中的文件。 二、絕對路徑。 本機絕對路徑是 例如 E:\ph

Ubuntu 18安裝Pycharm2018(附破解過程)專業版建立Pycharm快捷方式

一.到PyCharm網站下載最新版本2018 http://www.jetbrains.com/pycharm/download/#section=linux 二.右鍵提取出來,或者執行tar命令 進入解壓後的bin目錄中 cd /home/my/下載/pycharm

QT之C++和QML混合程式設計學習筆記

QML中使用C++物件 建立一個測試用的C++物件 #ifndef PIECHART_H #define PIECHART_H #include <QtQuick/QQuickPaintedItem> #include <QColor> #include <

QML與C++混合程式設計

文章參考: https://blog.csdn.net/foruok/article/details/32698603 http://blog.51cto.com/9291927/1975383 QT專案開發過程中,畫面上顯示的佈局以及對應的資料可能會動態變化,如果只用QML來構件簡單的

webview巢狀html實現精準定位(百度地圖、高德地圖、騰訊地圖、H5原生定位)js對比

最近在實現一個功能,就是在安卓手機和蘋果手機嵌入html程式碼,實現精準定位,我為此對比幾種定位的方法。我要的是精準定位,就是誤差在100米左右的功能,類似與外賣app那種定位精確度 1. 首先是原生h5定位 if(browser.versions.an

matlab和c++混合程式設計---matlab和vs的環境配置問題方法和步驟(轉載)

matlab和c++混合程式設計---方法和步驟 matlab和c++混合程式設計---matlab和vs的環境配置問題 摘要:Matlab具有很強的數值計算和分析等能力,而C/C++是目前最為流行的高階程式設計語言,兩者互補結合的混合程式設計在科學研究和工程實踐中具有非常重要的意義。從Matlab呼叫C

Ubuntu 使用vim進行Python程式設計常用快捷鍵

vim的安裝: sudo apt-get install vim-gtk vim的配置: sudo vim /etc/vim/vimrc set nu         // 在左側行號 set tabstop    //tab

Qt文件閱讀筆記-C++與QML混合程式設計QML畫餅狀圖)

這裡只點名一點: Qt Charts是利用Qt的圖形檢視框架(QGraphics)搞出來的,底層並不是用OPenGL,而QML卻與OPenGL的底層緊密關聯 執行截圖如下: 原始碼如下

C語言與matlab混合程式設計mwArray的Get函式的簡單用法解釋

網上的通用示例: double data[4] = {1.0, 2.0, 3.0, 4.0}; double x; mwArray a(2, 2, mxDOUBLE_CLASS); a.SetData(data, 4); x = a.Get(1,1); // x = 1.0

程式設計告警日誌級別說明

告警級別: 級別 縮寫字母 嚴重值 顏色 CRITICAL嚴重告警 C 500 紅色 MAJOR重大告警 M 400 橙色 MINOR次要告警 m 300 黃色 WARNING

建立呼叫基於QT5 QML的 DLL(舉例QML使用QZXing識別二維碼)

1.  概述 Qt Quick技術的引入,使得你能夠快速構建 UI,具有動畫、各種絢麗效果的 UI都不在話下。在許多情況下基於QML開發的漂亮的介面想將他設計成元件提供給其他人使用,又不想讓別人看到QML原始碼,另外如果其他人是基於vc環境又如何使用你的QML介面呢?

Python、R、Julia混合程式設計環境配置相關工具安裝

1  Python環境配置 1.1   安裝Anaconda Conda 是一個開源的軟體包管理系統和環境管理系統,用於安裝多個版本的軟體包及其依賴關係,並在它們之間輕鬆切換。 Conda 是為 Python 程式建立的,適用於 Linux,OS X 和Windows,也可以打包和分發其他軟體。

iOS WKWebView顯示進度條HTML的title

最近專案中新增活動,有一個需求,要載入HTML頁面,並且顯示HTML頁面的title;WKWebView 的estimatedProgress和title 都是KVO模式,所以可以新增監聽:[webVi