Qt 4.7新特征之Qt Quick開發(fā)流程
Qt4.7總算正式發(fā)布了。新版本的Qt包括了全新的QML技術(shù):一個先進(jìn)的描述性編程語言,以及對于性能的提升。,開源跨平臺 C++ 圖形化應(yīng)用程序框架 Qt 發(fā)布了 4.7.0 版本,引入了方便快速開發(fā)的腳本語言QML 。
今天一早到了office立馬就去Qt官網(wǎng),期待已久的4.7正式版還是沒出來。但是已經(jīng)迫不及待得將所了解到的4.7的新特征和大家分享一下了。以下內(nèi)容是對官方多個文檔的閱讀理解和自己的實例認(rèn)證結(jié)果。
Qt4.7新的特征有一下幾點
1.全新的Qt quick UI開發(fā)工具
里面包括三個模塊,下面會詳細(xì)分享這三個部分分別如何工作,相互關(guān)系是什么,能為開發(fā)者帶來哪些好處。
2.Qt質(zhì)量的提升
這個嘛,是肯定有提升的。因為4.7采用新的Qt Continuous Integration系統(tǒng)開發(fā)出來的第一個版本。所謂Qt Continuous Integration系統(tǒng)。說白了就是性能測試實驗做得多一點。當(dāng)Qt新版本每加進(jìn)或者更改一個功能的時候,這個系統(tǒng)可以對加進(jìn)來的模塊進(jìn)行測試,如果它對Qt其他部分性能產(chǎn)生壞的影響,那么將取消這個行為。也就是可以保證我們接下來使用的更高版本的Qt肯定比以前的性能更加優(yōu)化。
3.webkit的更新
Qt 4.7采用的更新了最新的webkit2.0模塊。支持硬件加速CSS、3D動畫。
4.Qt creator 2.0
creator2.0著重增加了mobile developers便利性。增加了對塞班和maemo開發(fā)環(huán)境的支持。
Qt quick工具包括三個部分。我們現(xiàn)在依次來了解這三個部分的內(nèi)容和功能。
1、QML (Qt元對象解釋性語言)它是用來解釋和說明UI的。語言形式類似于CSS,功能類似于JavaScript。下面大家看一段QML代碼應(yīng)該就清楚了。甚至這串代碼都不需要去解釋的。文件以qml為后綴名。(qml文件只是一個界面,可以是靜態(tài)的也可以是動態(tài)的。) qml可以實現(xiàn)很多復(fù)雜的ui動態(tài)交互。詳情可以參見qt的demo。
- Rectangle {
- id: rectangle1
- x: 208
- y: 31
- width: 100
- height: 100
- color: "#2afd00"
- radius: 50
- border.width: 0
- }
2、新的工具 Design 在creator2.0中。以圖為證。
qml和design工具最大的優(yōu)點在于可以實現(xiàn)qml腳本和ui的雙向動態(tài)交互。這在以前版本的工具designer中是實現(xiàn)不了的。而且qml是解釋性腳本語言,這個ui開發(fā)帶來很大的便利。
那么如何將我們設(shè)計的qml文件添加進(jìn)qt的project中呢?也就是如何在qt的application中使用qml。這里就自然進(jìn)入第三個部分。
3、QtDeclarative
這個模塊是用來裝載ui的。還是看代碼先。這是qt declarative的objectlistmodel的例子。
首先看一下objectlistmodel的pro文件
- TEMPLATE = app
- TARGET = objectlistmodel
- QT += declarative
- # Input
- SOURCES += main.cpp \
- dataobject.cpp
- HEADERS += dataobject.h
- RESOURCES += objectlistmodel.qrc
- objectlistmodel的main.cpp文件:
- #include <QApplication>
- #include <qdeclarativeengine.h>
- #include <qdeclarativecontext.h>
- #include <qdeclarative.h>
- #include <qdeclarativeitem.h>
- #include <qdeclarativeview.h>
- #include “dataobject.h”
- /*
- This example illustrates exposing a QList<QObject*> as a
- model in QML
- */
- int main(int argc, char ** argv)
- {
- QApplication app(argc, argv);
- QDeclarativeView view;
- QList<QObject*> dataList;
- dataList.append(new DataObject(“Item 1″, “red”));
- dataList.append(new DataObject(“Item 2″, “green”));
- dataList.append(new DataObject(“Item 3″, “blue”));
- dataList.append(new DataObject(“Item 4″, “yellow”));
- QDeclarativeContext *ctxt = view.rootContext();
- ctxt->setContextProperty(“myModel”,
- QVariant::fromValue(dataList));
- view.setSource(QUrl(“qrc:view.qml”));
- view.show();
- return app.exec();
- }
看到了吧,就是用QDeclarativeView這個類來裝載ui的。
那下面我們就可以自己寫個application,把圖中的12.qml裝載進(jìn)去編譯成一個exe文件了。
下面是我用到的main.cpp的代碼:
QApplication a(argc, argv);
- QDeclarativeView vi;
- vi.setSource(QUrl(“12.qml”));
- vi.setResizeMode(QDeclarativeView::SizeRootObjectToView);
- vi.show();
- return a.exec();
ok,至此4.7的性能介紹完畢。通過這個介紹我們也知道了4.7開發(fā)app的基本流程。 如有bug歡迎指正。
小結(jié):Qt 4.7新特征之Qt Quick開發(fā)流程的內(nèi)容介紹完了,希望對大家有幫助!Nokia發(fā)布了開源節(jié)界面庫Qt的新版本4.7。最新功能主要包括: QML(Qt Meta-Object-Language)--一種易學(xué)的描述性編程語言(類似于創(chuàng)建網(wǎng)頁?)。