Разработка на Qt и Qt Quick
Upcoming SlideShare
Loading in...5
×
 

Разработка на Qt и Qt Quick

on

  • 3,392 views

 

Statistics

Views

Total Views
3,392
Views on SlideShare
2,973
Embed Views
419

Actions

Likes
0
Downloads
14
Comments
0

4 Embeds 419

http://habrahabr.ru 416
http://www.slideshare.net 1
http://m.habrahabr.ru 1
url_unknown 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Разработка на Qt и Qt Quick Разработка на Qt и Qt Quick Presentation Transcript

    • Qt и Qt Quick возможности и перспективыАлександр ТруфановSenior Technical ConsultantForum Nokiaalexander.trufanov@nokia.com май, 2011
    • © 2011 NokiaЧто такое Qt?• Qt (”кьют”) кроссплатформенный C++ фреймворк для разработки приложений – Набор кроссплатформенных API и кроссплатформенный GUI фреймворк – Библиотека C++ классов – Средства разработки• Qt изначально проэктировался как эффективное средство разработки GUI приложений для десктопных платформ• Разработан норвежской компанией Trolltech, ставшей частью Nokia в 2008• Последняя версия 4.7.3
    • © 2011 NokiaКраткая история Qt Фокус на мобильных платформах (Symbian, Maemo, MeeGo), мобильные API Nokia покупает Trolltech, переименование в Qt Development Frameworks Qt 4.0 – нарушение совместимости приводит к новому KDE 4 Qtopia – платформа для моб. телефонов и PDA Первый публичный релиз (Qt 0.90) • Двойная лицензия: коммерческая и свободная для open source Решение организовать бизнес • “Q” красиво смотрелось в шрифте Emacs font. “t” - toolkit • Компания: Quasar Technologies (позднее: Trolltech) Эрик Чамбе-Инг Хавард Норд Старт разработки • Потребность в кроссплатформенном инстументарии создания GUI
    • © 2011 NokiaНаиболее известные компании,применяющие Qt в своих разработках … и многие, многие другие!
    • © 2011 NokiaЛицензии Qt• LGPL• Qt можно использовать свободно ! – В отличие от GPL, LGPL позволяет свободно использовать Qt в коммерческих приложениях с закрытым исходным кодом – Исходный код Qt полностью открыт и доступен разработчикам• Коммерческая версия (Digia) – Изменения, вносимые в исходный код Qt, не обязательно публиковать – Поддержка
    • © 2011 NokiaАрхитектура Qt• Qt имитирует родной стиль при отрисовке UI – Элементы UI передают оригинальный look & feel – Может быть адоптирован разработчиком• Построе на низкоуровневых API платформы – Не runtime!• Кроссплатформенный – Один код для всех платформ – Требуется лишь перекомпиляция
    • © 2011 NokiaОт встраиваемых устройств до Компании в различных индустрияхдесктопных приложений
    • © 2011 NokiaПлатформы Windows Mac OS Linux / X11 C++ Embedded Linux Windows CE Maemo / MeeGo Java Symbian (S60) Python Ada Pascal Развивается силами Qt open source сообщества. Perl Официально не поддерживается Qt Development Frameworks. PHP
    • © 2011 NokiaSymbian и Qt• Qt для Symbian: – Qt 4.6: Поддержка с S60 3rd. Edition, FP1+ (напр., Nokia N95, E71) – Qt 4.7.x: Поддержка с S60 5th Edition (сенсорные устройства) – Установите SDK для вашего устройства, или самое младшее SDK для устройств, поддержку которых вы желаете обеспечить. Поддержка Qt Предустановлен Series 60 Series 60 S60 S60 S60 S60 5.0 Symbian^2 Symbian^3 1.0 2.0 3.0 3.1 3.2 = = (+ 3 FPs) Symbian^1 Symbian platform …
    • © 2011 NokiaSmart Installer• Распространение Qt приложений для Symbian устройств – Qt не на всех устройствах – Решение: инсталляция / апгрейд по мере необходимости – Упаковка Smart Installer в дистрибутив• Скачать – http://qt.nokia.com/developer/nokia-smart-installer-for-symbian – Open source!
    • © 2011 NokiaMaemo / MeeGo и Qt• Maemo 5 – UI на базе GTK+ – Qt предустановлен – Библиотеки Qt : PR1.2(4.6.2), PR1.3 (4.7)• MeeGo 1.0 N (ранее: Maemo 6) – Qt заменяет GTK+ – Мульти-тач, поддержка расп. жестов – GTK и Clutter остаются для совместимости
    • © 2011 NokiaНачало разработки на Qt для Symbian иMeeGo• Скачать Qt SDK 1.1 (релиз от 4 мая) для Win, Nix или Mac – Средства разработки • IDE Qt Creator 2.1 + Remote Compiler • Qt Quick Designer • Qt Linguist – Библиотеки Qt 4.7.3 – Qt Mobility 1.1.3 – Симулятор – Отладка на устройстве• Qt Quick приложения могут публиковаться в Ovi Store!
    • © 2011 NokiaQt SDK – симулятор• Симуляция состояния батареи и питания• Информация об устройстве и настройка его локализации• Съемные носители (MMC)• Информация о сети• Местоположение• Импорт контактной книги• Сообщения (email, SMS)• Сенсоры (акселерометр, компас)• Поддержка скриптов
    • © 2011 NokiaOvi Notifications API
    • © 2011 Nokia Service API Client APIДоступ к серверу нотификаций Расположено нана стороне Nokia устройствеИспользуется HTTP REST Предоставляет интерфейсинтерфейс для регистрации на уведомления Часть Qt SDK
    • © 2011 NokiaРелиз Qt Creator 2.2 (4 мая)• Улучшенная поддержка QML• Улучшенный Qt Quick Designer• Отладка смешанного QMLC++• Поддержка CODA для Symbian и многое другое... QML Visual editor
    • © 2011 NokiaQt Mobility• Qt: Desktop → Mobile• Потребовались новые API для – Работы с сенсорами – Определения местоположения – Отправки сообщений – И т.д.• Qt Mobility: новый кроссплатформенные API для моб. служб – Реализованы на всех платформах, где это имеет смысл
    • © 2011 NokiaРелиз Qt Mobility 1.2 (12 мая)• Для Symbian и MeeGo• Новый модуль Connectivity (Bluetooth + NFC)• Улучшения в Contacts и Multimedia• Поддержка новых сенсоров в QtSensors• Большое число багов поправлено• Дополнительные QML binding‟и для API http://labs.qt.nokia.com/2011/05/12/qt-mobility-1-2-0-released/
    • © 2011 NokiaQt 4.7 • Qt 4.7: уже доступен! – Включает в себя Qt Quick – Интегрирует части Qt Mobility – Сфокусирован на производительности • http://qt.nokia.com/developer/qt-roadmap
    • Кое-что о Qt за 10минут
    • © 2011 NokiaМодули Qt QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support QtGui QtSql QtXml QtNetwork QtScript Phonon QtCore
    • © 2011 NokiaИерархия классов Qt QLayoutItem QObject QPaintDevice QString QLayout QWidget QImage ... ... ... QBoxLayout QDialog Большинство классов (и все виджеты) порожены от QObject ... ... ... ...
    • © 2011 NokiaРоль базового класса QObject• Реализация деревьев объектов и владения ими (нет сборщика мусора)• События, сигналы/слоты• Рефлексия (субклассы, потомки, слоты ...)• Приведение типов (qobject_cast)• Свойства (Q_Property)• Таймеры• Требуется декларация Q_OBJECT и обработка метакомпилятором
    • © 2011 NokiaСигналы и слоты• Сигналы – Высылаются по наступлению определенного собтия – Виджеты Qt: имеют предопредленные сигналы (напр., clicked()) – Можно создавать собственные сигналы – Могут соединяться со множеством слотов• Слоты – Функции, вызываемые в ответ на сигнал – Виджеты Qt: имеют предопредленные слоты (непр., quit()) – Можно создавать собственные слоты QObject::connect( spin, SIGNAL( valueChanged(int) ), slider, SLOT( setValue(int) ) );
    • © 2011 NokiaТипы данных• Обычные типы C++: int, bool, float, char• Собственные типы: QDate, QTime …• Последовательные (QList, QVector …) и ассоциативные (QMap …) контейнеры с Java- и STL-итераторами.• QString – строки в Unicode.• QVariant - хранит простые типы данных, может быть расширен.
    • © 2011 NokiaВиджеты• Элементы Ui, способные отображаться на экране и получать события пользовательского ввода.• Все порождены от QWidget• Если имеет предка – отображается в нем как в контейнере, иначе становиться окном.• Создаются невидимыми (show())• Имеют очередность при отображении.• Имеют стиль, палитру, шрифты и курсор.
    • © 2011 NokiaПалитра• Класс QPalette• По умолчанию, берется QApplication::palette()• QApplication::setPalette(), QWidget::setPalette() для изменения
    • © 2011 NokiaСтили• Класс QStyle и его потомки (QWindowsStyle, QMacStyle, QS60Style)• QWidget::setStyle() QApplication::setStyle()
    • © 2011 NokiaQt Style Sheets• CSS адаптированный под виджеты• На базе текущего стиля• QWidget::setStyleSheet() & QApplication::setStyleSheet()• Интергация с Qt Creator
    • Стандартные виджетыПользовательские с отрисовкой через QPainter Создание собственных виджетов © 2011 Nokia
    • © 2011 NokiaQGraphicsView• Позволяет отображать сцену с множеством элементов• Элементы: примитивы, изображения (SVG), виджеты• Элементы реагируют на события, drag&drop, определение столкновений• Каждый имеет собственную систему координат• Поддержка трансформаций и масштабирования• Сцена оптимизирована для отображения огромного числа элементов• Поддержка OpenGL
    • © 2011 NokiaЭффекты QGraphicsBlurEffect QGraphicsOpacityEffect Source QGraphicsColorizeEffect QGraphicsDropShadowEffectПрименимы как к виджетам, так и к элементам graphic scene
    • © 2011 NokiaФреймворк анимации• Никаких таймеров• Основан на изменении свойств объектов (QPropertyAnimation)• Допускает задание траекторий• Группировка анимаций (параллельная, последовательная)• Интеграция с машиной состояний
    • Qt Quick
    • © 2011 NokiaQt Quick (Qt User Interface Creation Kit)• Создавайте UI как дизайнер – Без знания C++ – Визуальные инструменты – Язык QML (расширение JavaScript) – Модуль: Declarative UI – Поддержка SVG, XHR, HTML5 Web DB
    • © 2011 Nokiahttp://www.youtube.com/watch?v=G5Q4mrq2hl8
    • © 2011 NokiaPhotoshop to QML exporter
    • © 2011 NokiaКроссплатформенность Qt Quick Maemo / MeeGo Windows 7 Symbian^3 Simulator
    • © 2011 Nokiahttp://www.youtube.com/watch?v=23qJoxQEvVg
    • © 2011 NokiaQML• UI описывается структурой элементов – Значения свойств пересчитываются динамически – Связь посредством Rectangle{ сигналов и слотов width: 200 height: 200 – Взаимодействие с C++ кодом возможно color: "white" – Aнимирование свойст при помощи Image { source: "pics/logo.png" состояний и переходов anchors.centerIn: parent } }
    • © 2011 NokiaQML – мета-объектный язык Qt 10 LOC 130 LOC
    • © 2011 NokiaQML – мета-объектный язык Qt
    • © 2011 NokiaИспользование Qt Declarative и QML• Запуск qml при помощи qmlviewer• Либо встраивание в Qt приложение:
    • © 2011 NokiaИнтеграция с существующим UI• UI на основе QWidget• UI на основе QGraphicsView:
    • © 2011 NokiaИнтеграция с С++ кодом• Возможность создания C++ плагинов для qml• Взаимодействие при помощи контекстных свойств и объектов:• Сигналы при изменении свойств контекстных объектов.• Вызов public слотов и Q_INVOKABLE методов объектов из QML.• Прямой вызов javascript функций
    • © 2011 NokiaQt Quick ComponentsTechnical Preview для Symbian:http://labs.qt.nokia.com/2011/04/08/qt-quick-components-for-symbian-technology-preview/
    • © 2011 NokiaComponents на ПК http://www.youtube.com/watch?v=nj5jzv6njKg
    • Qt 5.x
    • © 2011 NokiaПричины• Погресс технологий создания UI на протежении последних 3-х лет (Qt 4.x появился в 2005)• Дизайн UX (User eXpirience) стал критически важным• Новые парадигмы UX мобильных устойств возвращаются на ПК• Код Qt 4.7.x требует реорганизации для развития в новом ключе с прежней скоростью
    • © 2011 NokiaЦели• Создание приложений с выдющимся UI станет быстрее и проще• Максимальное использование GPU для ускорения графики во всех приложениях• Интеграция с Web технологиями, контентом и сервисами• Позволить портировать Qt на новые платформы с меньшими затратами
    • © 2011 NokiaРешение• Фокус смещается на QML в качестве UI технологии• Логика пишется на JS для простоты и ускорения разработки• C++ в основном для реализации QML плагинов и спец задачНо:• Максимальная совместимость с Qt 4.x на уровне исходного кода В идеале - нужна лишь перекомпиляция• Сохраняются QWidgetы• Qt/C++ может использоваться для всей логики как и раньше
    • © 2011 NokiaКак это будет делаться• Основной фокус на Linux (Wayland, X11), Mac и Windows Остальное – силами сообщества• Дифференциация поддержки различных платформ• Разработка станет более открытой Уравнивание в правах сообщества и сотрудников Nokia/Trolltech• Открытое управление, Хостинг вне Nokia
    • © 2011 NokiaЧто будет?• Все порты Qt базируются на Lighthouse – Lighthouse как средство реализации поддержки оконных систем• Реорганизация графического стека – Новый scenegraph оптимизированный для QML с подддержкой GL. – Новые QML itemы обратно совместимы, но их C++ реализация (QDeclarativeItem) изменится. – Шейдерные эффекты в QML коде – Требование OpenGL ES 2.0 для работы (в т.ч. MESA, ANGLE)
    • V#-Filename.ppt / 5/30/2011© 2009 Nokia 54
    • © 2011 NokiaЧто будет?• Старый QGraphicsView буддет поддерживаться, но не рекомендуется.• QPainter сохранится в основном для отрисовки документов (WebKit, text, PDF...)• Отказ от JavaScriptCore для реализации QtScript в пользу V8 и в QML и в WebKit• WebKit(2) - рендеринг в sandbox„е в отдельном потоке или процессе (скорость, безопасность)
    • © 2011 NokiaМодули• Модуляризация кода Qt - появятся специфичные для платформ модули (PC/mobile)• Mobility API интегрируется в модули Qt 5• Большая часть QtNetwork сливается с QtCore.• Все что касается QWidget выносится из QtGUI в QtWidgets• В QtGUI вносится новый SceneGraph и поддержка QWidgetов на его базе• QtWebkit будет независим от QWidgetов• Полностью исчезнет Qt3Support
    • © 2011 NokiaQML 3D http://www.youtube.com/watch?v=OXcxFZbKUNI
    • © 2011 NokiaИнформация• "The road to Qt 5" Version 0.6, Lars Knoll, 8. May 2011 http://labs.qt.nokia.com/wp-content/uploads/2011/05/Qt5.pdf• Thoughts about Qt 5. Lars Knoll on May 9, 2011 http://labs.qt.nokia.com/2011/05/09/thoughts-about-qt-5/• Responses to Qt 5. Lars Knoll on May 11, 2011 http://labs.qt.nokia.com/2011/05/11/responses-to-qt-5/• Meego Conf in San Francisco, May 23-25 – live streaming“Beta quality code available towards the end of 2011. Final release in 2012”
    • © 2011 NokiaВопросы