qmlНачало работы с qml


замечания

QML - это аббревиатура, обозначающая Q t M eta-object L anguage. Это декларативный язык программирования, который является частью структуры Qt. Основной целью QML является быстрое и легкое создание пользовательских интерфейсов для настольных, мобильных и встраиваемых систем. QML позволяет бесшовно интегрировать JavaScript , либо непосредственно в QML-код, либо путем включения файлов JavaScript.

Версии

Версия Qt Версия QtQuick Дата выхода
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

Создание простой кнопки

Вы можете легко преобразовать каждый компонент нажатием кнопки с помощью компонента MouseArea. В приведенном ниже коде показано окно 360x360 с кнопкой и текстом в центре; нажатие кнопки изменит текст:

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

Отображение изображения

В этом примере показано простейшее использование компонента Image для отображения изображения.

Свойство source изображения - это тип URL-адреса, который может быть либо файлом с абсолютным, либо относительным путем, URL-адресом Интернета ( http:// ) или ресурсом Qt ( qrc:/ )

import QtQuick 2.3

Rectangle {
    width: 640
    height: 480

    Image {
         source: "image.png"
    }
}
 

Привет, мир

Простое приложение, показывающее текст «Hello World» в центре окна.

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

Монтаж

QML поставляется с более новой версией кросс-платформенной платформы Qt . Вы можете найти новую версию Qt в разделе « Загрузки» .

Чтобы создать новый проект QML в среде разработки Qt Creator , выберите «Файл -> Создать ...», а в разделе «Приложения» выберите «Быстрое приложение Qt». После нажатия «select» вы можете теперь назвать и установить путь для этого проекта. После нажатия «next» вы можете выбрать, какие компоненты вы хотите использовать, если не уверены, просто оставьте значение по умолчанию и нажмите «Далее». Два следующих шага позволят вам настроить Kit и Source Control, если хотите, в противном случае сохраните настройки по умолчанию.

Теперь вы создали простое и готовое к использованию приложение QML.

Событие мыши

В этом примере показано, как событие мыши используется в 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.")
            }

        }
    }


}