qmlAan de slag met qml


Opmerkingen

QML is een acroniem dat staat voor Q t M eta-object L anguage. Het is een declaratieve programmeertaal die deel uitmaakt van het Qt-framework. Het hoofddoel van QML is het snel en eenvoudig maken van gebruikersinterfaces voor desktop-, mobiele en embedded systemen. QML maakt een naadloze integratie van JavaScript mogelijk , hetzij rechtstreeks in de QML-code of door JavaScript-bestanden op te nemen.

versies

Qt-versie QtQuick-versie Publicatiedatum
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

Een eenvoudige knop maken

U kunt elke component eenvoudig omzetten in een klikbare knop met behulp van de MouseArea-component. De onderstaande code geeft een 360x360-venster weer met een knop en een tekst in het midden; als u op de knop drukt, wordt de tekst gewijzigd:

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";
            }
        }
    }
}
 

Geef een afbeelding weer

Dit voorbeeld toont het eenvoudigste gebruik van de component Afbeelding om een afbeelding weer te geven.

De eigenschap source afbeelding is een URL-type dat een bestand met een absoluut of relatief pad, een internet-URL ( http:// ) of een Qt-bron ( qrc:/ ) kan zijn

import QtQuick 2.3

Rectangle {
    width: 640
    height: 480

    Image {
         source: "image.png"
    }
}
 

Hallo Wereld

Een eenvoudige applicatie met de tekst "Hallo wereld" in het midden van het venster.

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
    }
}
 

Installatie

QML wordt geleverd met een nieuwere versie van Qt . U kunt de nieuwste versie van Qt vinden in het gedeelte Downloads .

Als u een nieuw QML-project in de Qt Creator IDE wilt maken , selecteert u "Bestand -> Nieuw ..." en selecteert u onder "Toepassingen" "Qt Quick-Application". Nadat u op "selecteren" hebt geklikt, kunt u nu een naam opgeven en het pad voor dit project instellen. Nadat u op "Volgende" hebt gedrukt, kunt u selecteren welke componenten u wilt gebruiken. Als u niet zeker bent, verlaat u de standaard en klikt u op "Volgende". Met de volgende twee stappen kunt u desgewenst een kit en bronbeheer instellen, anders de standaardinstellingen behouden.

U hebt nu een eenvoudige en gebruiksklare QML-applicatie gemaakt.

Muis evenement

Dit voorbeeld laat zien hoe muisgebeurtenis wordt gebruikt in 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.")
            }

        }
    }


}