成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qt Quick初體驗QML編程

移動開發(fā)
QML是什么? QML是一種描訴性的腳本語言,文件格式以.qml結(jié)尾。語法格式非常像CSS(參考后文具體例子),但又支持javacript形式的編程控制。

本文介紹的是Qt Quick初體驗QML編程,QML它結(jié)合了QtDesigner UI和QtScript的有點。QtDesigner可以設(shè)計出.ui界面文件,但是不支持和Qt原生C++代碼的交互。

Creating a Menu Page

到現(xiàn)在,我們(的教程)已經(jīng)涵蓋了如何在單一的QML文件中創(chuàng)建元素和指定行為。在這一節(jié),我們的內(nèi)容將包含怎樣導(dǎo)入QML元素和如何復(fù)用一些創(chuàng)建好的組件來生成其他組件。

菜單顯示一個內(nèi)容列表,每一項都能執(zhí)行一個動作。我們可以通過幾種方式在QML創(chuàng)建一個菜單。首先,我們建立一個包含按鈕的菜單,每個按鈕最終都會執(zhí)行不同動作。菜單代碼在FileMenu.qml中。

  1. Code import QtQuick 1.0                \\import the main Qt QML module  
  2.  import "folderName"            \\import the contents of the folder  
  3.  import "script.js" as Script        \\import a Javascript file and name it as Script 

上面的語法可以看出怎么樣使用import關(guān)鍵字。FileMenu.qml需要用到JavaScript文件,或者不在同級目錄下的QML文件。因為Button.qml和FileMenu.qml在同一個目錄,我們不需要引入就可以使用它。我們可以通過聲明Button{}來直接創(chuàng)建一個Button元素 ,類似于一個Rectangle{}的聲明。

 

  1. Code In FileMenu.qml:  
  2.  
  3.      Row{  
  4.          anchors.centerIn: parent  
  5.          spacing: parent.width/6  
  6.  
  7.          Button{  
  8.              id: loadButton  
  9.              buttonColor: "lightgrey"  
  10.              label: "Load"  
  11.          }  
  12.          Button{  
  13.              buttonColor: "grey"  
  14.              id: saveButton  
  15.              label: "Save"  
  16.          }  
  17.          Button{  
  18.              id: exitButton  
  19.              label: "Exit"  
  20.              buttonColor: "darkgrey"  
  21.  
  22.              onButtonClick: Qt.quit()  
  23.          }  
  24.      } 

在FileMenu.qml中,我們聲明了三個Button元素。它們在一個Row元素里,它作為定位器將它的孩子們沿著一個垂直的行安放。Button的聲明在Button.qml中,與上節(jié)我們用到的Button.qml是一樣的。在新創(chuàng)建的按鈕里可以聲明綁定新的屬性,實際上也覆蓋了Button.qml中的屬性集。當exitButton按鈕被點擊時,窗口會被退出并關(guān)閉。注意,除了exitButton內(nèi)的onButtonClick handler會被調(diào)用之外,Button.qml內(nèi)的也會被調(diào)到。

Qt Quick初體驗QML編程

Rectangle內(nèi)聲明的Row,創(chuàng)建了一個容納一行button的容器。這個額外的矩形創(chuàng)造了一種在菜單內(nèi)組織一行button的間接方法。

現(xiàn)階段,編輯菜單的聲明非常簡單,有三個標簽分別是Copy、Paste和Select All的按鈕。

Qt Quick初體驗QML編程

裝備了導(dǎo)入和定制之前生成的組件的知識,現(xiàn)在我們可以將這些菜單頁組合成一個菜單欄——包含用來選擇菜單的按鈕,并且看看那我們怎樣使用QML組織數(shù)據(jù)。

Implementing a Menu Bar

我們的文本編輯器程序需要一種使用菜單欄顯示菜單的方法。使用菜單欄可以切換不同的菜單,用戶可以選擇要顯示的菜單。菜單切換意味著這些菜單比單單在一行中顯示出來需要更多的結(jié)構(gòu)。QML使用models和views來構(gòu)建數(shù)據(jù)并顯示這些結(jié)構(gòu)化的數(shù)據(jù)。

Using Data Models and Views

QML有不同的數(shù)據(jù)views可以顯示數(shù)據(jù)models。我們的菜單欄會將菜單顯示在一個列表中,這個列表有一個顯示一行菜單名的標題。我們可以在VisualItemModel中聲明一個菜單列表。VisualItemModel包含了像Rectangle和導(dǎo)入的UI元素這樣的views的items。其他的像ListModel元素這樣的model類型需要一個代理來顯示它們的數(shù)據(jù)。

我們在menuListModel中聲明了兩個可視的items,F(xiàn)ileMenu 和EditMenu。我們定制了兩個菜單,并使用ListView來顯示。 MenuBar.qml包含了QML聲明和一個在EditMenu.qml中定義的簡單的編輯菜單。

  1. CodeVisualItemModel{  
  2.          id: menuListModel  
  3.          FileMenu{  
  4.              width: menuListView.width  
  5.              height: menuBar.height  
  6.              color: fileColor  
  7.          }  
  8.          EditMenu{  
  9.              color: editColor  
  10.              width:  menuListView.width  
  11.              height: menuBar.height  
  12.          }  
  13.      }  

ListView元素將按照一個delegate來顯示一個model。這個delegate可能聲明在一個Row元素或則grid元素里顯示的model items。我們的menuListModel已經(jīng)有可見的items,因為,我們就不需要一個delegate了。

 

  1. ListView{  
  2.          id: menuListView  
  3.          //Anchors are set to react to window anchors  
  4.          anchors.fill:parent  
  5.          anchors.bottom: parent.bottom  
  6.          width:parent.width  
  7.          height: parent.height  
  8.          //the model contains the data  
  9.          model: menuListModel  
  10.          //control the movement of the menu switching  
  11.          snapMode: ListView.SnapOneItem  
  12.          orientation: ListView.Horizontal  
  13.          boundsBehavior: Flickable.StopAtBounds  
  14.          flickDeceleration: 5000  
  15.          highlightFollowsCurrentItem: true  
  16.          highlightMoveDuration:240  
  17.          highlightRangeMode: ListView.StrictlyEnforceRange  
  18.      } 

另外,ListView繼承自Flickable,使list可以響應(yīng)鼠標拖拽和其他手勢。上面代碼的最后一部分設(shè)置了Flickable屬性,對view創(chuàng)建了我們期待的閃爍移動。特別是highlightMoveDuration屬性改變閃爍轉(zhuǎn)變的過渡時間。highlightMoveDuration的值越大菜單切換越慢。

ListView通過index來維護所有的model的items,通過index被聲明的順序,可以訪問model中的每一個可見item。改變currentIndex實際上改變了ListView中的高亮item。我們的菜單欄的標題以實例證明了這種效果。一行里有兩個按鈕,當被點擊時,兩個都會改變當前的菜單。當點擊fileButton時,會改變當前的菜單到文件菜單,index為0的原因是,F(xiàn)ileMenu 在menuListModel中是第一個聲明的。同樣地,點擊editButton時改變當前菜單到EditMenu。

labelList的zvalue為1,表示它顯示在菜單欄前面。z值高的items顯示在低z值的前。缺省的z值是0.

  1. Rectangle{  
  2.          id: labelList  
  3.          ...  
  4.          z: 1  
  5.          Row{  
  6.              anchors.centerIn: parent  
  7.              spacing:40  
  8.              Button{  
  9.                  label: "File"  
  10.                  id: fileButton  
  11.                  ...  
  12.                  onButtonClick: menuListView.currentIndex = 0 
  13.              }  
  14.              Button{  
  15.                  id: editButton  
  16.                  label: "Edit"  
  17.                  ...  
  18.                  onButtonClick:    menuListView.currentIndex = 1 
  19.              }  
  20.          }  
  21.      }  

我們剛剛建立的菜單欄可以通過輕打或者點擊頂端的菜單名字訪問菜單。切換菜單的屏幕感覺起來直觀而且反應(yīng)很快。

Qt Quick初體驗QML編程

小結(jié):Qt Quick初體驗QML編程的內(nèi)容介紹完了,完成了一個簡單的菜單的小實例,希望通過本篇的實例,能對你有所幫助!!!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-24 17:22:29

Qt Quick QML

2011-06-10 11:05:05

Qt Quick QML

2011-06-20 14:58:53

QT BasicExcel

2011-06-16 17:19:33

Qt Meego

2011-06-07 17:35:39

iphone 多線程

2021-08-12 14:33:20

Python多線程編程

2011-03-11 14:43:41

Qt-QuickQML

2011-05-16 14:12:30

QuickWidgetQML

2009-08-01 09:06:35

UbuntuOneLinux開源操作系統(tǒng)

2009-03-09 15:12:39

XenServer安裝

2011-06-10 11:24:08

Qt Quick Designer

2011-07-28 14:19:12

iPhone 網(wǎng)絡(luò)編程 聊天程序

2023-07-15 08:01:38

2010-11-22 10:31:17

Sencha touc

2011-05-30 15:12:10

App Invento 初體驗

2011-06-24 11:03:31

Qt 多線程 線程

2011-08-30 15:32:08

QtQuickQML

2011-07-01 14:39:08

Qt Quick

2023-12-21 15:37:31

編程語言FortranC語言

2011-08-02 10:26:59

iOS 多線程 線程
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一级毛片,一级毛片 | 中国一级特黄真人毛片免费观看 | 国产精品自在线 | 一区二区三区久久久 | 国产成人高清视频 | 久久精品二区 | 久久久性 | 久久久久91| 久久久久国产 | 黄色操视频 | 亚洲大片 | 亚洲精品在线视频 | av在线影院 | 逼逼网| 污污的网站在线观看 | 黄色网址免费在线观看 | 激情五月综合网 | 国产午夜精品久久 | 免费精品 | 日韩精品一 | 日日干天天干 | 欧美综合一区二区 | 国产精品久久久久久婷婷天堂 | 91精品国产综合久久久亚洲 | 中文成人在线 | 成人影院av | 成人毛片视频免费 | 国产成人精品一区二区三 | 亚洲日韩中文字幕一区 | 久草福利 | 久久久久国产精品午夜一区 | 国产一级毛片精品完整视频版 | av网站在线播放 | 在线观看视频你懂得 | 黄色免费网站在线看 | 国产精品成人在线 | 久久国内精品 | 久久久99精品免费观看 | 亚洲国产成人精品女人久久久 | 欧美精品一区二区在线观看 | 日韩三级电影在线看 |