QML調(diào)研續(xù) 2011.6.24 1.數(shù)據(jù)類型與視圖...................................... 2 1.1 列表視圖ListView示例........................... 2 1.2網(wǎng)格視圖 GridView示例........................... 3 1.3路徑視圖 PathView示例........................... 6 1.4 Flickable...................................... 7 2.QML與QT/C++交互.................................... 7 1.示例一:QML調(diào)用C++中設(shè)置好的元素................. 8 2.示例二:......................................... 9 3. QML程序打包運(yùn)行................................... 13 1.數(shù)據(jù)類型與視圖
QML使用了與Qt中Model-View類似的結(jié)構(gòu),即模型—視圖結(jié)構(gòu),。模型可以是QML的簡(jiǎn)單數(shù)據(jù),,或者復(fù)雜的C++數(shù)據(jù)。具體有: QML: ListModel, XmlListModel, VisualItemModel C++: QAbstractItemModel, QStringList, QList<QObject*> 視圖顯示模型提供的數(shù)據(jù),,主要有:ListView, GridView, PathView Model定義好數(shù)據(jù),,通過Delegate來描述Model中每條數(shù)據(jù)在View具體顯示的控件,。 1.1 列表視圖ListView示例
運(yùn)行效果圖: 1.2網(wǎng)格視圖 GridView示例
運(yùn)行效果圖: 1.3路徑視圖 PathView示例
1.4 Flickable
可以讓它的孩子元素可以被拖拽和滾動(dòng),但卻不用創(chuàng)建一個(gè)MouseArea或者處理鼠標(biāo)事件,。好處:Flickable界面很容易通過屬性配置,,flickDirection, flickDeceleration,horizontalVelocity, verticalVelocity,boundsBehavior,… 很多QML元素默認(rèn)是flickable 2.QML與QT/C++交互
具體描述參見上一個(gè)調(diào)研報(bào)告,以下是具體示例,。 1.示例一:QML調(diào)用C++中設(shè)置好的元素
運(yùn)行結(jié)果: 2.示例二:
運(yùn)行結(jié)果: 3.QML程序打包運(yùn)行
QT有動(dòng)態(tài)編譯和靜態(tài)編譯之分,。 動(dòng)態(tài)引用編譯,是指相關(guān)的庫,,以dll的形式引用庫。動(dòng)態(tài)編譯的Exe程序尺寸比較小,,因?yàn)橄嚓P(guān)的庫都沒有包含進(jìn)來,。當(dāng)然,程序發(fā)布的時(shí)候,,還要把相關(guān)的庫也一并發(fā)布出去,。 Tips:QT的靜態(tài)編譯的配置網(wǎng)上有各種各樣的方法,,我試了好幾個(gè),最終成功了,。過程相當(dāng)麻煩,,好像也沒有官方的說法,所以就挨個(gè)試,。 以下是具體步驟: 首先是設(shè)置變量: 這樣生成的exe就可以直接在其他機(jī)子上運(yùn)行了,。 但是有另外一個(gè)問題:這都是網(wǎng)上針對(duì)qt說的,,我嘗試過后,對(duì)于qml文件還是不能打包進(jìn)exe文件,,只能是exe文件和qml文件一起才能運(yùn)行,。暫時(shí)還沒找到解決辦法。但是可以在其他機(jī)子上點(diǎn)擊exe直接運(yùn)行了,。 |
|