qml Handledning
Komma igång med qml
Sök…
Anmärkningar
QML är en förkortning som står för Q t M eta-objekt L- språk. Det är ett deklarativt programmeringsspråk som ingår i Qt-ramverket. QMLs huvudsyfte är snabb och enkel skapande av användargränssnitt för stationära, mobila och inbäddade system. QML tillåter sömlös integration av JavaScript , antingen direkt i QML-koden eller genom att inkludera JavaScript-filer.
versioner
| Qt-version | QtQuick-version | Utgivningsdatum |
|---|---|---|
| 4,7 | 1,0 | 2010-09-21 |
| 4,8 | 1,1 | 2011-12-15 |
| 5,0 | 2,0 | 2012/12/19 |
| 5,1 | 2,1 | 2013/06/03 |
| 5,2 | 2,2 | 2013/12/12 |
| 5,3 | 2,3 | 2014/05/20 |
| 5,4 | 2,4 | 2014/12/10 |
| 5,5 | 2,5 | 2015/07/01 |
| 5,6 | 2,6 | 2016/03/15 |
| 5,7 | 2,7 | 2016/06/16 |
| 5,8 | 2,7 | 2017/01/23 |
Installation
QML kommer med en nyare version av applikationsramen för plattformar Qt . Du hittar den senaste versionen av Qt i avsnittet Nedladdningar .
För att skapa ett nytt QML-projekt i Qt Creator IDE väljer du "File -> New ..." och under "Applications" väljer du "Qt Quick-Application". Efter att ha klickat på "välj" kan du nu namnge och ställa in sökvägen för detta projekt. Efter att ha tryckt på "nästa" kan du välja vilka komponenter du vill använda, om du är osäker lämnar du bara standard och klickar på "nästa". De två nästa stegen låter dig konfigurera en Kit och Source Control om du vill, annars behåller standardinställningarna.
Du har nu skapat en enkel och redo att använda QML-applikation.
Hej världen
En enkel applikation som visar texten "Hello World" i mitten av fönstret.
import QtQuick 2.3
import QtQuick.Window 2.0
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World") //The method qsTr() is used for translations from one language to other.
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
}
Skapa en enkel knapp
Du kan enkelt transformera varje komponent i en klickbar knapp med MouseArea-komponenten. Koden nedan visar ett 360x360-fönster med en knapp och en text i mitten; genom att trycka på knappen ändras texten:
import QtQuick 2.0
Rectangle {
width: 360
height: 360
Rectangle {
id: button
width: 100
height: 30
color: "red"
radius: 5 // Let's round the rectangle's corner a bit, so it resembles more a button
anchors.centerIn: parent
Text {
id: buttonText
text: qsTr("Button")
color: "white"
anchors.centerIn: parent
}
MouseArea {
// We make the MouseArea as big as its parent, i.e. the rectangle. So pressing anywhere on the button will trigger the event
anchors.fill: parent
// Exploit the built-in "clicked" signal of the MouseArea component to do something when the MouseArea is clicked.
// Note that the code associated to the signal is plain JavaScript. We can reference any QML objects by using their IDs
onClicked: {
buttonText.text = qsTr("Clicked");
buttonText.color = "black";
}
}
}
}
Visa en bild
Detta exempel visar den enklaste användningen av bildkomponenten för att visa en bild.
Bild source egendom är en url typ som kan vara antingen en fil med en absolut eller relativ sökväg, en Internet-URL ( http:// ) eller en Qt resurs ( qrc:/ )
import QtQuick 2.3
Rectangle {
width: 640
height: 480
Image {
source: "image.png"
}
}
Mushändelse
Detta exempel visar hur mushändelse används i QML.
import QtQuick 2.7
import QtQuick.Window 2.2
Window {
visible: true
Rectangle {
anchors.fill: parent
width: 120; height: 240
color: "#4B7A4A"
MouseArea {
anchors.fill: parent // set mouse area (i.e. covering the entire rectangle.)
acceptedButtons: Qt.AllButtons
onClicked: {
// print to console mouse location
console.log("Mouse Clicked.")
console.log("Mouse Location: <",mouseX,",",mouseY,">")
//change Rectangle color
if ( mouse.button === Qt.RightButton )
parent.color = 'blue'
if ( mouse.button === Qt.LeftButton )
parent.color = 'red'
if ( mouse.button === Qt.MiddleButton )
parent.color = 'yellow'
}
onReleased: {
// print to console
console.log("Mouse Released.")
}
onDoubleClicked: {
// print to console
console.log("Mouse Double Clicked.")
}
}
}
}