Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
develop:qt:quick [2021/08/21 07:54] admin [Диалоговые окна] |
develop:qt:quick [2021/08/31 15:22] (текущий) admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Qt Quick ====== | + | ====== Qt Quick: Общее, Элементы, |
**Qt Quick** - набор технологий для создания пользовательского интерфейса.\\ | **Qt Quick** - набор технологий для создания пользовательского интерфейса.\\ | ||
Строка 14: | Строка 14: | ||
===== JavaScript ===== | ===== JavaScript ===== | ||
- | ---- | + | |
**Java** интерпретируется и применяется сходу, например тут- **" | **Java** интерпретируется и применяется сходу, например тут- **" | ||
Можно вставлять целые функции: | Можно вставлять целые функции: | ||
Строка 82: | Строка 82: | ||
</ | </ | ||
+ | |||
===== Объекты ===== | ===== Объекты ===== | ||
- | |||
==== Не визуальные ==== | ==== Не визуальные ==== | ||
---- | ---- | ||
Строка 93: | Строка 92: | ||
| [Mouse; Drop; Pinch; MultiPointTouch]Area; | | [Mouse; Drop; Pinch; MultiPointTouch]Area; | ||
+ | |||
==== Визуальные ==== | ==== Визуальные ==== | ||
---- | ---- | ||
Строка 141: | Строка 140: | ||
</ | </ | ||
+ | |||
==== Свойства элементов ==== | ==== Свойства элементов ==== | ||
---- | ---- | ||
Строка 189: | Строка 188: | ||
</ | </ | ||
+ | |||
=== Собственные свойства === | === Собственные свойства === | ||
---- | ---- | ||
Строка 197: | Строка 196: | ||
Необходимо указывать **типы данных**, | Необходимо указывать **типы данных**, | ||
+ | |||
==== Собственные элементы ==== | ==== Собственные элементы ==== | ||
---- | ---- | ||
Строка 244: | Строка 243: | ||
</ | </ | ||
+ | |||
==== Собственные модули ==== | ==== Собственные модули ==== | ||
---- | ---- | ||
Строка 250: | Строка 249: | ||
Располагают их в отдельной папке, создают файл **qmldir** с картой описания qml файлов элементов, | Располагают их в отдельной папке, создают файл **qmldir** с картой описания qml файлов элементов, | ||
+ | |||
==== Динамическое создание элементов ==== | ==== Динамическое создание элементов ==== | ||
---- | ---- | ||
Строка 279: | Строка 278: | ||
**Flickable** - типа скроллбара, | **Flickable** - типа скроллбара, | ||
+ | |||
==== Готовые элементы ==== | ==== Готовые элементы ==== | ||
---- | ---- | ||
Строка 310: | Строка 309: | ||
Так же, в модуле **QtQuick.Extras** есть аналогичные, | Так же, в модуле **QtQuick.Extras** есть аналогичные, | ||
+ | |||
==== Диалоговые окна ==== | ==== Диалоговые окна ==== | ||
---- | ---- | ||
Строка 394: | Строка 393: | ||
</ | </ | ||
+ | |||
+ | ===== Управление размещением ===== | ||
+ | ==== Фиксаторы ==== | ||
+ | ---- | ||
+ | **Фиксатор (anchors)** позволяет определить расположение одного элемента относительно других.\\ | ||
+ | В **QML** все элементы вложены друг в друга и располагаются элементы относительно своего родителя.\\ | ||
+ | Для фиксации можно использовать свойства: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code QML> | ||
+ | import QtQuick 2.12; import QtQuick.Window 2.12 | ||
- | ==== ==== | + | Window |
+ | { | ||
+ | width: 640; height: 480; visible: true; | ||
+ | Rectangle | ||
+ | { | ||
+ | anchors.fill: | ||
+ | Text | ||
+ | { | ||
+ | text: "This is text in text-element" | ||
+ | anchors.centerIn: | ||
+ | |||
+ | // или аналогично: | ||
+ | // | ||
+ | // | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Эти же свойства можно использовать для заполнения элементом области | ||
+ | < | ||
+ | < | ||
+ | <code QML> | ||
+ | import QtQuick 2.12; import QtQuick.Window 2.12 | ||
+ | |||
+ | Window | ||
+ | { | ||
+ | width: 640; height: 480; visible: true; | ||
+ | Rectangle | ||
+ | { | ||
+ | // Для группы свойств | ||
+ | anchors | ||
+ | { | ||
+ | left: parent.left | ||
+ | right: parent.right | ||
+ | top: parent.top | ||
+ | bottom: parent.bottom | ||
+ | } | ||
+ | // Аналогично | ||
+ | // | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code QML> | ||
+ | import QtQuick 2.12; import QtQuick.Controls 2.2 | ||
+ | |||
+ | ApplicationWindow | ||
+ | { | ||
+ | width: 640; height: 480; visible: true; | ||
+ | Rectangle | ||
+ | { | ||
+ | anchors.fill: | ||
+ | Rectangle | ||
+ | { | ||
+ | id: firstRec | ||
+ | color: " | ||
+ | width: parent.width / 1.5 | ||
+ | height: parent.height / 1.5 | ||
+ | anchors.left: | ||
+ | anchors.top: | ||
+ | } | ||
+ | Rectangle | ||
+ | { | ||
+ | opacity: 0.5 | ||
+ | color: " | ||
+ | anchors | ||
+ | { | ||
+ | top: firstRec.verticalCenter | ||
+ | left: firstRec.horizontalCenter | ||
+ | right: parent.right | ||
+ | bottom: parent.bottom | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code QML> | ||
+ | import QtQuick 2.12; import QtQuick.Controls 2.2 | ||
+ | |||
+ | ApplicationWindow | ||
+ | { | ||
+ | width: 640; height: 480; visible: true; | ||
+ | Rectangle | ||
+ | { | ||
+ | anchors.fill: | ||
+ | Rectangle | ||
+ | { | ||
+ | id: leftrec | ||
+ | width: 60 | ||
+ | color: " | ||
+ | anchors | ||
+ | { | ||
+ | left: parent.left | ||
+ | top: parent.top | ||
+ | bottom: parent.bottom | ||
+ | topMargin: 10 | ||
+ | bottomMargin: | ||
+ | } | ||
+ | } | ||
+ | Rectangle | ||
+ | { | ||
+ | id: rightrec | ||
+ | width: 60 | ||
+ | color: " | ||
+ | anchors | ||
+ | { | ||
+ | right: parent.right | ||
+ | top: parent.top | ||
+ | bottom: parent.bottom | ||
+ | topMargin: 10 | ||
+ | bottomMargin: | ||
+ | } | ||
+ | } | ||
+ | Rectangle | ||
+ | { | ||
+ | id: centerrec | ||
+ | color: " | ||
+ | anchors | ||
+ | { | ||
+ | top: parent.top | ||
+ | bottom: parent.bottom | ||
+ | left: leftrec.right | ||
+ | right: rightrec.left | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Традиционные размещения | ||
---- | ---- | ||
+ | Размещения являются элементами | ||
+ | | Row, RowLayout | Горизонтальное размещение, | ||
+ | | Column, ColumnLayout | Вертикальное размещение, | ||
+ | | Grid, GridLayout | Табличное размещение, | ||
+ | | StackLayout | Одновременно можно видеть только один элемент, | ||
+ | Содержат свойства **spacing** и **layoutDirection**, | ||
+ | Элементы со словом **layout**, содержатся в модуле **QtQuick.Layouts** и обладают доп. свойством **Layout**: | ||
+ | | .minimum{Width, | ||
+ | | .maximum{Width, | ||
+ | | .preferred{Width, | ||
+ | | .fill{Width, | ||
- | ==== ==== | + | < |
+ | < | ||
+ | <code QML> | ||
+ | import QtQuick 2.12; //import QtQuick.Window 2.12 | ||
+ | import QtQuick.Controls 2.2 | ||
+ | |||
+ | ApplicationWindow | ||
+ | { | ||
+ | width: 640; height: 480; visible: true; | ||
+ | Rectangle | ||
+ | { | ||
+ | anchors.fill: | ||
+ | Row | ||
+ | { | ||
+ | anchors.centerIn: | ||
+ | spacing: 10 | ||
+ | Rectangle | ||
+ | { | ||
+ | width: 64; height: 64; color: " | ||
+ | } | ||
+ | Rectangle | ||
+ | { | ||
+ | width: 64; height: 64; color: " | ||
+ | } | ||
+ | Rectangle | ||
+ | { | ||
+ | width: 64; height: 64; color: " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code QML> | ||
+ | import QtQuick 2.12; import QtQuick.Controls 2.2; import QtQuick.Layouts 1.12 | ||
+ | |||
+ | ApplicationWindow | ||
+ | { | ||
+ | width: 640; height: 480; visible: true; | ||
+ | Rectangle | ||
+ | { | ||
+ | anchors.fill: | ||
+ | RowLayout | ||
+ | { | ||
+ | anchors.fill: | ||
+ | spacing: 10 | ||
+ | Layout.margins: | ||
+ | Rectangle | ||
+ | { | ||
+ | Layout.minimumWidth: | ||
+ | } | ||
+ | Rectangle | ||
+ | { | ||
+ | Layout.minimumWidth: | ||
+ | } | ||
+ | Rectangle | ||
+ | { | ||
+ | Layout.minimumWidth: | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Размещение в виде потока | ||
---- | ---- | ||
+ | Упорядочивает элементы змейкой, | ||
+ | < | ||
+ | < | ||
+ | <code QML> | ||
+ | import QtQuick 2.12; import QtQuick.Controls 2.2; import QtQuick.Layouts 1.12 | ||
+ | ApplicationWindow | ||
+ | { | ||
+ | width: 640; height: 480; visible: true; | ||
+ | Rectangle | ||
+ | { | ||
+ | anchors.fill: | ||
+ | Flow | ||
+ | { | ||
+ | anchors.fill: | ||
+ | anchors.margins: | ||
+ | spacing: 20 | ||
+ | Repeater | ||
+ | { | ||
+ | model: | ||
+ | { | ||
+ | var v = new Array(10); | ||
+ | for(var i= 0; i < v.length; ++i) | ||
+ | v[i]= i % 2 ? " | ||
+ | return v; | ||
+ | } | ||
+ | Rectangle | ||
+ | { | ||
+ | width: 64; height: 64; radius: 32; color: modelData | ||
+ | Text | ||
+ | { | ||
+ | color: " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ |