qt for android

一直想動手試試qml,正好公司有個企業app是蘋果的,我窮屌絲,買不起,後臺我作的,我知道接口,就來個android的,qml之前只是看過,沒有動手作東西。這是個練手的機會。html

先來幾幅圖片看看效果android

這是在個人ZTE紅牛手機上運行的效果,android4.3。ios

這個小的app程序使用qml和js,文件操做使用了不多的C++來完成。網絡

qml相似與html語言,在寫界面時,其能夠直白的來描述界面元素,非常方便。js的靈活性是業務邏輯寫起來很順手。app

在這個過程當中,我第一次寫這個,不靈活,原本爲了代碼的可維護行,我想將js代碼獨立出來,但是發現這個有點麻煩,js須要操做界面元素,而後我只能獨立出來邏輯,而後用js回調函數來實現。好比網絡操做:函數

.pragma library

function post(url_, data_, root, fun_, fun_1) {
    var xml_http_request = new XMLHttpRequest();

    xml_http_request.onreadystatechange = function() {
        if (xml_http_request.readyState === 4 && xml_http_request.status === 200) {
            timer.stop()
            fun_(xml_http_request.responseText);
        }
    }

    xml_http_request.open("POST", url_, true);
    xml_http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    //xml_http_request.timeout = 3000
    //xml_http_request.ontimeout = fun_1
    var timer = Qt.createQmlObject("import QtQuick 2.3; Timer {interval: 10000; repeat: false; running: true;}",root,"MyTimer");
    timer.triggered.connect(function(){
        console.log("close")
        xml_http_request.abort();
        fun_1();
    });
    xml_http_request.send(data_);


}

qt中的js不支持timeout,因此使用了定時器,爲了處理響應和超時,傳了兩個函數進來。

不過這個體驗很好,qml+js。post

qml定製控件很方便,好比上圖中的按鈕和相似與ios上的選擇的那個(day or hour)都是定製的,還有提示網絡操做正在進行的,很簡單就實現了想要的效果。
ui

相關文章
相關標籤/搜索