qmlErste Schritte mit qml


Bemerkungen

QML ist eine Abkürzung, die für Q t M eta-object L steht. Es ist eine deklarative Programmiersprache, die Teil des Qt-Frameworks ist. Hauptzweck von QML ist die schnelle und einfache Erstellung von Benutzeroberflächen für Desktop-, mobile und Embedded-Systeme. QML ermöglicht die nahtlose Integration von JavaScript , entweder direkt in den QML-Code oder durch das Einfügen von JavaScript-Dateien.

Versionen

Qt-Version QtQuick-Version Veröffentlichungsdatum
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

Eine einfache Schaltfläche erstellen

Mit der MouseArea-Komponente können Sie jede Komponente in eine anklickbare Schaltfläche umwandeln. Der folgende Code zeigt ein 360x360-Fenster mit einer Schaltfläche und einem Text in der Mitte. Durch Drücken der Taste wird der Text geändert:

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

Zeigen Sie ein Bild an

Dieses Beispiel zeigt die einfachste Verwendung der Image-Komponente zum Anzeigen eines Bildes.

Die Image- source ist ein URL-Typ , bei dem es sich um eine Datei mit einem absoluten oder relativen Pfad, einer Internet-URL ( http:// ) oder einer Qt-Ressource ( qrc:/ ) handeln kann.

import QtQuick 2.3

Rectangle {
    width: 640
    height: 480

    Image {
         source: "image.png"
    }
}
 

Hallo Welt

Eine einfache Anwendung mit dem Text "Hello World" in der Mitte des Fensters.

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

Installation

QML enthält eine neuere Version des plattformübergreifenden Anwendungsframeworks Qt . Die neueste Version von Qt finden Sie im Bereich Downloads .

Um ein neues QML-Projekt in der Qt Creator-IDE zu erstellen, wählen Sie "Datei -> Neu ..." und unter "Anwendungen" die Option "Qt Quick-Application". Nachdem Sie auf "Auswählen" geklickt haben, können Sie nun den Pfad für dieses Projekt angeben und festlegen. Wenn Sie auf "Weiter" klicken, können Sie auswählen, welche Komponenten Sie verwenden möchten. Wenn Sie sich nicht sicher sind, lassen Sie die Standardeinstellung und klicken Sie auf "Weiter". Mit den beiden nächsten Schritten können Sie ggf. ein Kit und eine Quellcodeverwaltung einrichten. Andernfalls behalten Sie die Standardeinstellungen bei.

Sie haben jetzt eine einfache und einsatzbereite QML-Anwendung erstellt.

Mausereignis

Dieses Beispiel zeigt, wie Mausereignisse in QML verwendet werden.

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.")
            }

        }
    }


}