QML – новый подход к построению GUI

Содержание

Слайд 2

Введение

Подходы к построению десктопных приложений:
Императивный
Декларативный
QML - это декларативный язык, предназначенный для описания пользовательского интерфейса программы.
Сравнение:
XAML
CSS

Введение Подходы к построению десктопных приложений: Императивный Декларативный QML - это декларативный

Слайд 3

Синтаксис

Дерево объектов со свойствами:
Rectangle {
id: canvas
width: 200

Синтаксис Дерево объектов со свойствами: Rectangle { id: canvas width: 200 height:
height: 200
color: "blue"
Image {
id: logo source: "pics/logo.png"
anchors.centerIn: parent
x: canvas.height / 5
}
}

Слайд 4

Основные типы данных

action
bool
color
date
enumeration
font
int
list
point
real
rect
size
string
time
url
vector3d

Item {
x: 10.5 // a 'real' property

Основные типы данных action bool color date enumeration font int list point
state: "details“ // a 'string' property
focus: true // a 'bool' property }

Item { x: 10.5 // a 'real' property state: "details" // a 'string' property focus: true // a 'bool' property ...

Item { x: 10.5 // a 'real' property state: "details" // a 'string' property focus: true // a 'bool' property ...

Item { x: 10.5 // a 'real' property state: "details" // a 'string' property focus: true // a 'bool' property ...

Слайд 5

Идентификаторы объектов

Row {
Text {
id: text1
text: "Hello World"
}
Text

Идентификаторы объектов Row { Text { id: text1 text: "Hello World" }
{ text: text1.text }
}
Идентификатор элемента виден во всей области компонента, в котором этот элемент находится

Слайд 6

Выражения

JavaScript – выражения могут быть использованы для назначения свойств элементов:
Пример 1:
Item {

Выражения JavaScript – выражения могут быть использованы для назначения свойств элементов: Пример

width: 100 * 3
height: 50 + 22
}
Пример 2:
Item {
width: 300
height: 300
Rectangle {
width: parent.width - 50
height: 100
color: "yellow"
}
}

Слайд 7

Соединения (Connections)

Создает подключение к QML-сигналу:
MouseArea {
id: area
}
...
Connections

Соединения (Connections) Создает подключение к QML-сигналу: MouseArea { id: area } ...
{
target: area
onClicked: foo(...)
}
Преимущества:
для одного сигнала можно написать несколько соединений
создание связей за пределами сферы отправителя сигнала
подключение к источникам не нужно предопределять

Слайд 8

Сигналы. Обработка сигналов

Обработка сигнала нажатия кнопки мыши:
Item {
width: 100;
height: 100

Сигналы. Обработка сигналов Обработка сигнала нажатия кнопки мыши: Item { width: 100;

MouseArea {
anchors.fill: parent
onClicked: {
console.log("mouse button clicked")
}
}
}
Возможность создания собственных сигналов с последующей их обработкой

Слайд 9

Состояния

Это множество изменений по отношению к стандартной конфигурации элемента:
Rectangle {
id: myRect

Состояния Это множество изменений по отношению к стандартной конфигурации элемента: Rectangle {

width: 100; height: 100
color: "black"
MouseArea {
id: mouseArea
anchors.fill: parent
onClicked: myRect.state == 'clicked' ?
myRect.state = "" :
myRect.state = 'clicked';
}
states: [
State {
name: "clicked"
PropertyChanges { target: myRect; color: "red" }
}
]
}

Слайд 10

Поведение элементов

Поведение определяет анимации, которые должны применяться, когда изменяются определенные значения свойств элемента:
Rectangle {

Поведение элементов Поведение определяет анимации, которые должны применяться, когда изменяются определенные значения

id: rect
width: 100;
height: 100
color: "red"
Behavior on width {
NumberAnimation { duration: 1000 }
}
MouseArea {
anchors.fill: parent
onClicked: rect.width = 50
}
}

Слайд 11

Анимация

Свойства и методы анимации привязаны непосредственно к элементам QML:
Rectangle {
width: 100

Анимация Свойства и методы анимации привязаны непосредственно к элементам QML: Rectangle {

height: 100
color: "green"
RotationAnimation on rotation {
loops: Animation.Infinite
from: 0
to: 360
}
}
Свойства, присущие для всех видов анимации:
alwaysRunToEnd : bool
loops : int
paused : bool
running : bool

Слайд 12

Работа с мышью

Для обработки сигналов, отправленных мышью служит элемент MouseArea:
Rectangle {
width:

Работа с мышью Для обработки сигналов, отправленных мышью служит элемент MouseArea: Rectangle
100; height: 100
color: "green"
MouseArea {
anchors.fill: parent
onClicked: { parent.color = 'red' }
}
}
Имя файла: QML-–-новый-подход-к-построению-GUI.pptx
Количество просмотров: 151
Количество скачиваний: 0