QML
QML | |
---|---|
Класс языка | декларативный, скриптовый |
Появился в | 2009 |
Разработчик | Qt Project |
Расширение файлов | .qml |
Выпуск | 6.4[1] (29 сентября 2022; 23 месяца назад (2022-09-29)) |
Испытал влияние | JavaScript, Qt, CSS |
Сайт | doc.qt.io/qt-5/qtquick-q… |
QML (Qt Meta Language или Qt Modeling Language[2]) — декларативный язык программирования, в основании которого лежит среда JavaScript. QML используется для разработки приложений, делающих основной упор на пользовательский интерфейс[3] и, в целом, на дизайн графической части. Является частью Qt Quick, среды разработки пользовательского интерфейса, распространяемой вместе с Qt. Часто используется для создания приложений, ориентированных на мобильные устройства с сенсорным управлением.
QML-документ представляет собой дерево элементов. QML элемент[4], также как и элемент Qt, представляет собой совокупность блоков: графических (таких, как rectangle, image) и поведенческих (таких, как state, transition, animation). Эти элементы могут быть объединены, чтобы построить комплексные компоненты, начиная от простых кнопок и ползунков и заканчивая полноценными приложениями, работающими с интернетом.
QML элементы могут быть дополнены стандартными для JavaScript вставками путём встраивания .js файлов. Также они могут быть расширены C++ компонентами через Qt framework.
QML - это язык разметки; его средой выполнения JavaScript являлся пользовательский движок V4.[5]
Код QML и JavaScript может быть скомпилирован в собственные двоичные файлы C++ с помощью Qt Quick Compiler.[6] Для удобства разработки существует формат файла кэша QML[7] который динамически сохраняет скомпилированную версию 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 и выше).
См. также
Примечания
- ↑ "Qt 6.4 Released". Архивировано 17 октября 2022. Дата обращения: 6 ноября 2022.
- ↑ Henrik Hartz (Product Manager for Qt Software at Nokia) comment on the name (неопр.) (24 августа 2009). Дата обращения: 29 мая 2013. Архивировано из оригинала 25 марта 2014 года.
- ↑ GettingStartedQMLRussian | Qt Wiki | Qt Developer Network (неопр.). Дата обращения: 11 июня 2011. Архивировано из оригинала 1 марта 2011 года.
- ↑ Qt 4.7: QML Elements (неопр.). Doc.qt.nokia.com. Дата обращения: 22 сентября 2010. Архивировано из оригинала 11 августа 2012 года.
- ↑ Knoll, Lars Evolution of the QML engine, part 1 (неопр.) (15 апреля 2013). Дата обращения: 11 мая 2018. Архивировано 12 мая 2018 года.
- ↑ Qt Quick Compiler (неопр.). Дата обращения: 7 сентября 2019. Архивировано 29 сентября 2019 года.
- ↑ Deploying QML Applications | Qt 5.13 (неопр.). doc.qt.io. Дата обращения: 7 сентября 2019. Архивировано 25 сентября 2019 года.
Ссылки
- Введение в QML (рус.)
- QML примеры и Демо (англ.)
- Qt Labs блог, связанный с QML (англ.)
- QML Creator для Android