翻譯|使用教程|編輯:鮑佳佳|2021-03-16 11:29:44.070|閱讀 471 次
概述:本教程將逐步介紹如何使用QML創(chuàng)建完整的應(yīng)用程序。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
QML高級教程1-創(chuàng)建游戲畫布和塊
Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中非常有用。而且它也可以在三種主要的臺式機(jī)操作系統(tǒng)以及移動操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運(yùn)行。現(xiàn)在我們?yōu)槟闾峁┝嗣赓M(fèi)的試用版。
Qt組件推薦:
創(chuàng)建應(yīng)用程序屏幕
第一步是在您的應(yīng)用程序中創(chuàng)建基本的QML項。
首先,我們使用以下主屏幕創(chuàng)建我們的Same Game應(yīng)用程序:
這是由主應(yīng)用程序文件定義的samegame.qml,如下所示:
import QtQuick 2.0 Rectangle { id: screen width: 490; height: 720 SystemPalette { id: activePalette } Item { width: parent.width anchors { top: parent.top; bottom: toolBar.top } Image { id: background anchors.fill: parent source: "../shared/pics/background.jpg" fillMode: Image.PreserveAspectCrop } } Rectangle { id: toolBar width: parent.width; height: 30 color: activePalette.window anchors.bottom: screen.bottom Button { anchors { left: parent.left; verticalCenter: parent.verticalCenter } text: "New Game" onClicked: console.log("This doesn't do anything yet...") } Text { id: score anchors { right: parent.right; verticalCenter: parent.verticalCenter } text: "Score: Who knows?" } } }
這為您提供了一個基本的游戲窗口,其中包括塊的主畫布,“新游戲”按鈕和得分顯示。
您在這里可能不認(rèn)識的一項是SystemPalette項。這提供了對Qt系統(tǒng)選項板的訪問,并用于使按鈕具有更原始的外觀。
請注意為錨Item,Button和Text類型是使用組(點)表示法為可讀性設(shè)置。
上面代碼中的Button項定義在一個單獨的組件文件中,名為Button.qml。為了創(chuàng)建一個功能按鈕,我們在一個矩形內(nèi)使用QML類型Text和MouseArea。下面是Button.qml的代碼。
import QtQuick 2.0 Rectangle { id: container property string text: "Button" signal clicked width: buttonLabel.width + 20; height: buttonLabel.height + 5 border { width: 1; color: Qt.darker(activePalette.button) } antialiasing: true radius: 8 // color the button with a gradient gradient: Gradient { GradientStop { position: 0.0 color: { if (mouseArea.pressed) return activePalette.dark else return activePalette.light } } GradientStop { position: 1.0; color: activePalette.button } } MouseArea { id: mouseArea anchors.fill: parent onClicked: container.clicked(); } Text { id: buttonLabel anchors.centerIn: container color: activePalette.buttonText text: container.text } }
這本質(zhì)上是定義了一個包含文本并可以被點擊的矩形。MouseArea有一個onClicked()處理程序,實現(xiàn)了當(dāng)該區(qū)域被點擊時發(fā)出容器的clicked()信號。
在同一游戲中,當(dāng)游戲開始時,屏幕上充滿了小塊。每個塊只是一個包含圖像的項目。區(qū)塊代碼在單獨的Block.qml文件中定義。
import QtQuick 2.0 Item { id: block Image { id: img anchors.fill: parent source: "../shared/pics/redStone.png" } }
目前,塊并沒有做任何事情,它只是一個圖像。隨著本教程的進(jìn)展,我們將為圖塊添加動畫和行為。我們還沒有添加任何代碼來創(chuàng)建塊,我們將在下一章中進(jìn)行。
我們已經(jīng)使用anchors.fill: parent將圖像設(shè)置為其父項的大小。這意味著,當(dāng)我們在教程的后面動態(tài)創(chuàng)建和調(diào)整塊項的大小時,圖像將自動調(diào)整為正確的大小。
注意Image類型的源屬性的相對路徑。這個路徑是相對于包含Image類型的文件的位置而言的。另外,您也可以將Image源設(shè)置為絕對文件路徑或包含圖像的URL。
到目前為止,你應(yīng)該已經(jīng)熟悉了這些代碼。我們剛剛創(chuàng)建了一些基本類型來開始。接下來,我們將在游戲畫布中填充一些塊。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: