Перейти к содержанию

QML

Материал из Википедии — свободной энциклопедии
QML
Класс языка Мультипарадигменный: декларативный, реактивный, сценарный
Появился в 2009; 17 лет назад (2009)
Разработчик Qt Project
Расширение файлов .qml
Выпуск 6.8[1] (8 октября 2024; 2 года назад (2024-10-08))
Система типов динамическая, сильная
Испытал влияние XAML,[2] JSON, JavaScript, Qt
Повлиял на Qt
Сайт doc.qt.io/qt/qmlapplications.html
QML
Расширение .qml
MIME-тип text/x-qml[3]
Разработчик Qt Project
Последний выпуск
Тип формата Сценарный язык
Сайт doc.qt.io/qt/qmlapplications.html

QML (Qt Meta Language или Qt Modeling Language[5]) — декларативный язык программирования, в основании которого лежит среда JavaScript. QML используется для разработки приложений, делающих основной упор на пользовательский интерфейс[6] и, в целом, на дизайн графической части. Является частью Qt Quick, среды разработки пользовательского интерфейса, распространяемой вместе с Qt. Часто используется для создания приложений, ориентированных на мобильные устройства с сенсорным управлением.

QML-документ представляет собой дерево элементов. QML элемент[7], также как и элемент Qt, представляет собой совокупность блоков: графических (таких, как rectangle, image) и поведенческих (таких, как state, transition, animation). Эти элементы могут быть объединены, чтобы построить комплексные компоненты, начиная от простых кнопок и ползунков и заканчивая полноценными приложениями, работающими с интернетом.

QML элементы могут быть дополнены стандартными для JavaScript вставками путём встраивания .js файлов. Также они могут быть расширены C++ компонентами через Qt framework.

QML - это язык разметки; его средой выполнения JavaScript являлся пользовательский движок V4.[8]

Код QML и JavaScript может быть скомпилирован в собственные двоичные файлы C++ с помощью Qt Quick Compiler.[9] Для удобства разработки существует формат файла кэша QML[10] который динамически сохраняет скомпилированную версию QML для более быстрого старта при следующем запуске.

Синтаксис, семантика

[править | править код]

Пример:

import QtQuick 1.0

 Rectangle {
     id: canvas
     width: 200
     height: 200
     color: "blue"

     Image {
         id: logo
         source: "pics/logo.png"
         x: canvas.height / 5
     }

     Text {
         id: message
         color: "white"
         text: "Hello World!"
         anchors.centerIn: parent
     }
 }

Объекты задаются их типом, указанным перед парой фигурных скобок. Типы объектов всегда начинаются с заглавной буквы. В вышеупомянутом примере есть два объекта: Image и Text. Внутри фигурных скобок можно задать информацию об объекте, например, его свойства. Свойства задаются в виде <свойство>: <значение>. В этом примере у объекта Image есть свойство source, которому присвоено значение «pics/logo.png». Свойство и его значение разделяются двоеточием.

В отличие от присвоения значений в традиционных языках в QML символ двоеточия связывает свойства и его значение. Так в примере свойство «x» связывается со значением, получаемым при вычислении формулы «canvas.height / 5», и при любом изменении высоты (height) объекта Rectangle горизонтальная позиция (x) вставленной картинки Image будет автоматически изменяться на пятую часть высоты Rectangle.

Инструменты разработки

[править | править код]

Так как QML и JavaScript очень похожи, то любые среды разработки, поддерживающие JavaScript, могут быть использованы для работы с QML. Также полная поддержка подсветки синтаксиса, автозавершение кода, встроенная справочная система, отладчик доступны в кросс-платформенной среде разработки Qt Creator IDE (с версии 2.1 и выше).

Примечания

[править | править код]
  1. ↑ Qt 6.8 Released. Дата обращения: 30 августа 2026. Архивировано 9 сентября 2026 года.
  2. ↑ Which interface for a modern application? scriptol. Дата обращения: 30 августа 2026. Архивировано 25 апреля 2025 года.
  3. ↑ https://gitlab.freedesktop.org/xdg/shared-mime-info/-/blob/2.1/data/freedesktop.org.xml.in#L1966
  4. ↑ Hilsheimer V. Qt 6.4 Released — 2022.
  5. ↑ Henrik Hartz (Product Manager for Qt Software at Nokia) comment on the name (24 августа 2009). Дата обращения: 29 мая 2013. Архивировано из оригинала 25 марта 2014 года.
  6. ↑ GettingStartedQMLRussian | Qt Wiki | Qt Developer Network. Дата обращения: 11 июня 2011. Архивировано из оригинала 1 марта 2011 года.
  7. ↑ Qt 4.7: QML Elements. Doc.qt.nokia.com. Дата обращения: 22 сентября 2010. Архивировано из оригинала 11 августа 2012 года.
  8. ↑ Knoll, Lars. Evolution of the QML engine, part 1 (15 апреля 2013). Дата обращения: 11 мая 2018. Архивировано 12 мая 2018 года.
  9. ↑ Qt Quick Compiler. Дата обращения: 7 сентября 2019. Архивировано 29 сентября 2019 года.
  10. ↑ Deploying QML Applications | Qt 5.13. doc.qt.io. Дата обращения: 7 сентября 2019. Архивировано 25 сентября 2019 года.