Szukaj…


Uwagi

QML to akronim oznaczający angażację Q t M eta-obiektu L. Jest to deklaratywny język programowania, który jest częścią frameworka Qt. Głównym celem QML jest szybkie i łatwe tworzenie interfejsów użytkownika dla systemów stacjonarnych, mobilnych i wbudowanych. QML umożliwia bezproblemową integrację JavaScript , bezpośrednio w kodzie QML lub poprzez dołączanie plików JavaScript.

Wersje

Wersja Qt Wersja QtQuick Data wydania
4.7 1.0 21.09.2010
4.8 1.1 15.12.2011
5.0 2.0 19.12.2012
5.1 2.1 2013-06-03
5.2 2.2 12.12.2013
5.3 2.3 2014-05-20
5.4 2.4 2014-12-10
5.5 2.5 01.07.2015
5.6 2.6 15.03.2016
5.7 2.7 16.06.2016
5.8 2.7 23.01.2017

Instalacja

QML zawiera nowszą wersję międzyplatformowej struktury aplikacji Qt . Najnowszą wersję Qt można znaleźć w sekcji Pliki do pobrania .

Aby utworzyć nowy projekt QML w środowisku IDE Qt Creator , wybierz „Plik -> Nowy ...”, aw obszarze „Aplikacje” wybierz „Szybka aplikacja Qt”. Po kliknięciu „wybierz” możesz teraz nazwać i ustawić ścieżkę dla tego projektu. Po naciśnięciu przycisku „Dalej” możesz wybrać komponenty, których chcesz użyć, jeśli nie jesteś pewien, po prostu pozostaw domyślny i kliknij „Dalej”. Dwa następne kroki pozwolą ci skonfigurować Kit i kontrolę źródła, jeśli chcesz, w przeciwnym razie zachowaj ustawienia domyślne.

Utworzyłeś teraz prostą i gotową do użycia aplikację QML.

Witaj świecie

Prosta aplikacja wyświetlająca tekst „Hello World” na środku okna.

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

Tworzenie prostego przycisku

Możesz łatwo przekształcić każdy składnik w klikalny przycisk za pomocą składnika MouseArea. Poniższy kod wyświetla okno 360x360 z przyciskiem i tekstem na środku; naciśnięcie przycisku zmieni tekst:

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

Wyświetl zdjęcie

Ten przykład pokazuje najprostsze użycie komponentu Image do wyświetlenia obrazu.

Właściwość source obrazu to typ adresu URL, który może być plikiem ze ścieżką bezwzględną lub względną, internetowym adresem URL ( http:// ) lub zasobem Qt ( qrc:/ )

import QtQuick 2.3

Rectangle {
    width: 640
    height: 480

    Image {
         source: "image.png"
    }
}

Wydarzenie myszy

Ten przykład pokazuje, jak zdarzenie myszy jest używane w 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.")
            }

        }
    }


}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow