QML – новый подход к построению GUI. Введение Подходы к построению десктопных приложений: Императивный Декларативный QML - это декларативный язык, предназначенный.

Презентация:



Advertisements
Похожие презентации
Class Date { private int year = 0; private int month = 0; private int day = 0; public void SetDate (int y, int m, int d) { year = y; month = m; day = d;
Advertisements

Построение HTML5&JavaScript приложений для Windows 8.
Электронная Россия ( ), ЭР-2004 Лекция # 2 Основы анимации на основе Flash-технологий.
Михаил Черномордиков Developer Evangelist, Microsoft Россия
«Натуральный» интерфейс в Metro приложениях СЕРГЕЙ БАЙДАЧНЫЙ СПЕЦИАЛИСТ ПО РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ MS SWIT.
Типы данных в языке Паскаль Тип определяет множество значений данных, а также операции, которые могут выполняться над этими данными.
CSS Каскадные таблицы стилей. Назначение, история Задают способы визуализации содержимого HTML-документа CSS уровень 1 (1996, 1999) CSS уровень 2 – можно.
Lesson 3 - HTML Formatting. Text Formatting Tags TagDescription Defines bold text Defines big text Defines emphasized text Defines italic text Defines.
Dim graph1 As Graphics (устанавливает ИМЯ объекта области рисования) Dim pen1 As New Pen(Color.Red, 1) (устанавливает ЦВЕТ и ТОЛЩИНУ пера) Dim brush1 As.
Sun Proprietary/Confidential: Internal Use Only 1 Developer/Community Campaign Александр Щербатый Язык JavaFX Script – разработка приложений.
Введение в CSS. Базовый синтаксис CSS селектор { свойство1: значение; свойство2: значение; } селектор некоторое имя стиля, для которого добавляются параметры.
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.1 V5.00 Global.
1 Списки в языке Haskell. Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. [] -- пустой список [1, 2,
1 Учебный курс Введение в JavaScript и CGI Лекция 1 Введение в JavaScript кандидат технических наук Павел Брониславович Храмцов
Библиотека для создания оконных интерфейсов на любых скриптовых языках в операционной системе Windows.
CSS Cascading Style Sheet. CSS это правила как должен выглядеть HTML. Существуют три типа правил CSS 1. HTML селектор - текстовая часть HTML тэга. P селектор.
Введение в JavaScript. Общие сведения Web, как гипертекстовую систему, можно рассматривать с двух точек зрения. Во-первых, как совокупность отображаемых.
1 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; 2 namespace.
Функции с переменным числом аргументов private static int Sum(int a, int b) { return a + b; } static void Main() { int sum = Sum(1, 2); } 1 Функции.
Date: File:UPPROG_09E.1 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Хранение данных.
Транксрипт:

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

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

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

Основные типы данных action bool color date enumeration font int list point real rect size string time url vector3d 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...

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

Выражения JavaScript – выражения могут быть использованы для назначения свойств элементов: Пример 1: Item { width: 100 * 3 height: } Пример 2: Item { width: 300 height: 300 Rectangle { width: parent.width - 50 height: 100 color: "yellow" }

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

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

Состояния Это множество изменений по отношению к стандартной конфигурации элемента: Rectangle { id: myRect 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" } } ] }

Поведение элементов Поведение определяет анимации, которые должны применяться, когда изменяются определенные значения свойств элемента: Rectangle { id: rect width: 100; height: 100 color: "red" Behavior on width { NumberAnimation { duration: 1000 } } MouseArea { anchors.fill: parent onClicked: rect.width = 50 }

Анимация Свойства и методы анимации привязаны непосредственно к элементам QML: Rectangle { width: 100 height: 100 color: "green" RotationAnimation on rotation { loops: Animation.Infinite from: 0 to: 360 } Свойства, присущие для всех видов анимации: alwaysRunToEnd : boolbool loops : intint paused : boolbool running : boolbool

Работа с мышью Для обработки сигналов, отправленных мышью служит элемент MouseArea: Rectangle { width: 100; height: 100 color: "green" MouseArea { anchors.fill: parent onClicked: { parent.color = 'red' } }

QML в С++ приложениях Создание и передача свойства «цвет» из C++ приложения в QML: // main.cpp #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QDeclarativeView view; QDeclarativeContext *context = view.rootContext(); context->setContextProperty("backgroundColor", QColor(Qt::yellow)); view.setSource(QUrl::fromLocalFile("main.qml")); view.show(); return app.exec(); } // main.qml Rectangle { width: 300 height: 300 color: backgroundColor Text { anchors.centerIn: parent text: "Hello Yellow World!" }