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

3,680 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,680
On SlideShare
0
From Embeds
0
Number of Embeds
449
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Qt и Qt Quick возможности и перспективыАлександр ТруфановSenior Technical ConsultantForum Nokiaalexander.trufanov@nokia.com май, 2011
  2. 2. © 2011 NokiaЧто такое Qt?• Qt (”кьют”) кроссплатформенный C++ фреймворк для разработки приложений – Набор кроссплатформенных API и кроссплатформенный GUI фреймворк – Библиотека C++ классов – Средства разработки• Qt изначально проэктировался как эффективное средство разработки GUI приложений для десктопных платформ• Разработан норвежской компанией Trolltech, ставшей частью Nokia в 2008• Последняя версия 4.7.3
  3. 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
  4. 4. © 2011 NokiaНаиболее известные компании,применяющие Qt в своих разработках … и многие, многие другие!
  5. 5. © 2011 NokiaЛицензии Qt• LGPL• Qt можно использовать свободно ! – В отличие от GPL, LGPL позволяет свободно использовать Qt в коммерческих приложениях с закрытым исходным кодом – Исходный код Qt полностью открыт и доступен разработчикам• Коммерческая версия (Digia) – Изменения, вносимые в исходный код Qt, не обязательно публиковать – Поддержка
  6. 6. © 2011 NokiaАрхитектура Qt• Qt имитирует родной стиль при отрисовке UI – Элементы UI передают оригинальный look & feel – Может быть адоптирован разработчиком• Построе на низкоуровневых API платформы – Не runtime!• Кроссплатформенный – Один код для всех платформ – Требуется лишь перекомпиляция
  7. 7. © 2011 NokiaОт встраиваемых устройств до Компании в различных индустрияхдесктопных приложений
  8. 8. © 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
  9. 9. © 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 …
  10. 10. © 2011 NokiaSmart Installer• Распространение Qt приложений для Symbian устройств – Qt не на всех устройствах – Решение: инсталляция / апгрейд по мере необходимости – Упаковка Smart Installer в дистрибутив• Скачать – http://qt.nokia.com/developer/nokia-smart-installer-for-symbian – Open source!
  11. 11. © 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 остаются для совместимости
  12. 12. © 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!
  13. 13. © 2011 NokiaQt SDK – симулятор• Симуляция состояния батареи и питания• Информация об устройстве и настройка его локализации• Съемные носители (MMC)• Информация о сети• Местоположение• Импорт контактной книги• Сообщения (email, SMS)• Сенсоры (акселерометр, компас)• Поддержка скриптов
  14. 14. © 2011 NokiaOvi Notifications API
  15. 15. © 2011 Nokia Service API Client APIДоступ к серверу нотификаций Расположено нана стороне Nokia устройствеИспользуется HTTP REST Предоставляет интерфейсинтерфейс для регистрации на уведомления Часть Qt SDK
  16. 16. © 2011 NokiaРелиз Qt Creator 2.2 (4 мая)• Улучшенная поддержка QML• Улучшенный Qt Quick Designer• Отладка смешанного QMLC++• Поддержка CODA для Symbian и многое другое... QML Visual editor
  17. 17. © 2011 NokiaQt Mobility• Qt: Desktop → Mobile• Потребовались новые API для – Работы с сенсорами – Определения местоположения – Отправки сообщений – И т.д.• Qt Mobility: новый кроссплатформенные API для моб. служб – Реализованы на всех платформах, где это имеет смысл
  18. 18. © 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/
  19. 19. © 2011 NokiaQt 4.7 • Qt 4.7: уже доступен! – Включает в себя Qt Quick – Интегрирует части Qt Mobility – Сфокусирован на производительности • http://qt.nokia.com/developer/qt-roadmap
  20. 20. Кое-что о Qt за 10минут
  21. 21. © 2011 NokiaМодули Qt QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support QtGui QtSql QtXml QtNetwork QtScript Phonon QtCore
  22. 22. © 2011 NokiaИерархия классов Qt QLayoutItem QObject QPaintDevice QString QLayout QWidget QImage ... ... ... QBoxLayout QDialog Большинство классов (и все виджеты) порожены от QObject ... ... ... ...
  23. 23. © 2011 NokiaРоль базового класса QObject• Реализация деревьев объектов и владения ими (нет сборщика мусора)• События, сигналы/слоты• Рефлексия (субклассы, потомки, слоты ...)• Приведение типов (qobject_cast)• Свойства (Q_Property)• Таймеры• Требуется декларация Q_OBJECT и обработка метакомпилятором
  24. 24. © 2011 NokiaСигналы и слоты• Сигналы – Высылаются по наступлению определенного собтия – Виджеты Qt: имеют предопредленные сигналы (напр., clicked()) – Можно создавать собственные сигналы – Могут соединяться со множеством слотов• Слоты – Функции, вызываемые в ответ на сигнал – Виджеты Qt: имеют предопредленные слоты (непр., quit()) – Можно создавать собственные слоты QObject::connect( spin, SIGNAL( valueChanged(int) ), slider, SLOT( setValue(int) ) );
  25. 25. © 2011 NokiaТипы данных• Обычные типы C++: int, bool, float, char• Собственные типы: QDate, QTime …• Последовательные (QList, QVector …) и ассоциативные (QMap …) контейнеры с Java- и STL-итераторами.• QString – строки в Unicode.• QVariant - хранит простые типы данных, может быть расширен.
  26. 26. © 2011 NokiaВиджеты• Элементы Ui, способные отображаться на экране и получать события пользовательского ввода.• Все порождены от QWidget• Если имеет предка – отображается в нем как в контейнере, иначе становиться окном.• Создаются невидимыми (show())• Имеют очередность при отображении.• Имеют стиль, палитру, шрифты и курсор.
  27. 27. © 2011 NokiaПалитра• Класс QPalette• По умолчанию, берется QApplication::palette()• QApplication::setPalette(), QWidget::setPalette() для изменения
  28. 28. © 2011 NokiaСтили• Класс QStyle и его потомки (QWindowsStyle, QMacStyle, QS60Style)• QWidget::setStyle() QApplication::setStyle()
  29. 29. © 2011 NokiaQt Style Sheets• CSS адаптированный под виджеты• На базе текущего стиля• QWidget::setStyleSheet() & QApplication::setStyleSheet()• Интергация с Qt Creator
  30. 30. Стандартные виджетыПользовательские с отрисовкой через QPainter Создание собственных виджетов © 2011 Nokia
  31. 31. © 2011 NokiaQGraphicsView• Позволяет отображать сцену с множеством элементов• Элементы: примитивы, изображения (SVG), виджеты• Элементы реагируют на события, drag&drop, определение столкновений• Каждый имеет собственную систему координат• Поддержка трансформаций и масштабирования• Сцена оптимизирована для отображения огромного числа элементов• Поддержка OpenGL
  32. 32. © 2011 NokiaЭффекты QGraphicsBlurEffect QGraphicsOpacityEffect Source QGraphicsColorizeEffect QGraphicsDropShadowEffectПрименимы как к виджетам, так и к элементам graphic scene
  33. 33. © 2011 NokiaФреймворк анимации• Никаких таймеров• Основан на изменении свойств объектов (QPropertyAnimation)• Допускает задание траекторий• Группировка анимаций (параллельная, последовательная)• Интеграция с машиной состояний
  34. 34. Qt Quick
  35. 35. © 2011 NokiaQt Quick (Qt User Interface Creation Kit)• Создавайте UI как дизайнер – Без знания C++ – Визуальные инструменты – Язык QML (расширение JavaScript) – Модуль: Declarative UI – Поддержка SVG, XHR, HTML5 Web DB
  36. 36. © 2011 Nokiahttp://www.youtube.com/watch?v=G5Q4mrq2hl8
  37. 37. © 2011 NokiaPhotoshop to QML exporter
  38. 38. © 2011 NokiaКроссплатформенность Qt Quick Maemo / MeeGo Windows 7 Symbian^3 Simulator
  39. 39. © 2011 Nokiahttp://www.youtube.com/watch?v=23qJoxQEvVg
  40. 40. © 2011 NokiaQML• UI описывается структурой элементов – Значения свойств пересчитываются динамически – Связь посредством Rectangle{ сигналов и слотов width: 200 height: 200 – Взаимодействие с C++ кодом возможно color: "white" – Aнимирование свойст при помощи Image { source: "pics/logo.png" состояний и переходов anchors.centerIn: parent } }
  41. 41. © 2011 NokiaQML – мета-объектный язык Qt 10 LOC 130 LOC
  42. 42. © 2011 NokiaQML – мета-объектный язык Qt
  43. 43. © 2011 NokiaИспользование Qt Declarative и QML• Запуск qml при помощи qmlviewer• Либо встраивание в Qt приложение:
  44. 44. © 2011 NokiaИнтеграция с существующим UI• UI на основе QWidget• UI на основе QGraphicsView:
  45. 45. © 2011 NokiaИнтеграция с С++ кодом• Возможность создания C++ плагинов для qml• Взаимодействие при помощи контекстных свойств и объектов:• Сигналы при изменении свойств контекстных объектов.• Вызов public слотов и Q_INVOKABLE методов объектов из QML.• Прямой вызов javascript функций
  46. 46. © 2011 NokiaQt Quick ComponentsTechnical Preview для Symbian:http://labs.qt.nokia.com/2011/04/08/qt-quick-components-for-symbian-technology-preview/
  47. 47. © 2011 NokiaComponents на ПК http://www.youtube.com/watch?v=nj5jzv6njKg
  48. 48. Qt 5.x
  49. 49. © 2011 NokiaПричины• Погресс технологий создания UI на протежении последних 3-х лет (Qt 4.x появился в 2005)• Дизайн UX (User eXpirience) стал критически важным• Новые парадигмы UX мобильных устойств возвращаются на ПК• Код Qt 4.7.x требует реорганизации для развития в новом ключе с прежней скоростью
  50. 50. © 2011 NokiaЦели• Создание приложений с выдющимся UI станет быстрее и проще• Максимальное использование GPU для ускорения графики во всех приложениях• Интеграция с Web технологиями, контентом и сервисами• Позволить портировать Qt на новые платформы с меньшими затратами
  51. 51. © 2011 NokiaРешение• Фокус смещается на QML в качестве UI технологии• Логика пишется на JS для простоты и ускорения разработки• C++ в основном для реализации QML плагинов и спец задачНо:• Максимальная совместимость с Qt 4.x на уровне исходного кода В идеале - нужна лишь перекомпиляция• Сохраняются QWidgetы• Qt/C++ может использоваться для всей логики как и раньше
  52. 52. © 2011 NokiaКак это будет делаться• Основной фокус на Linux (Wayland, X11), Mac и Windows Остальное – силами сообщества• Дифференциация поддержки различных платформ• Разработка станет более открытой Уравнивание в правах сообщества и сотрудников Nokia/Trolltech• Открытое управление, Хостинг вне Nokia
  53. 53. © 2011 NokiaЧто будет?• Все порты Qt базируются на Lighthouse – Lighthouse как средство реализации поддержки оконных систем• Реорганизация графического стека – Новый scenegraph оптимизированный для QML с подддержкой GL. – Новые QML itemы обратно совместимы, но их C++ реализация (QDeclarativeItem) изменится. – Шейдерные эффекты в QML коде – Требование OpenGL ES 2.0 для работы (в т.ч. MESA, ANGLE)
  54. 54. V#-Filename.ppt / 5/30/2011© 2009 Nokia 54
  55. 55. © 2011 NokiaЧто будет?• Старый QGraphicsView буддет поддерживаться, но не рекомендуется.• QPainter сохранится в основном для отрисовки документов (WebKit, text, PDF...)• Отказ от JavaScriptCore для реализации QtScript в пользу V8 и в QML и в WebKit• WebKit(2) - рендеринг в sandbox„е в отдельном потоке или процессе (скорость, безопасность)
  56. 56. © 2011 NokiaМодули• Модуляризация кода Qt - появятся специфичные для платформ модули (PC/mobile)• Mobility API интегрируется в модули Qt 5• Большая часть QtNetwork сливается с QtCore.• Все что касается QWidget выносится из QtGUI в QtWidgets• В QtGUI вносится новый SceneGraph и поддержка QWidgetов на его базе• QtWebkit будет независим от QWidgetов• Полностью исчезнет Qt3Support
  57. 57. © 2011 NokiaQML 3D http://www.youtube.com/watch?v=OXcxFZbKUNI
  58. 58. © 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”
  59. 59. © 2011 NokiaВопросы

×