html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

А давайте пощупаем Qt5

Выход первой альфы Qt5 уже не за горами, но зачем нам ждать этого момента, если мы можем прямо сейчас окунуться в ближайшее будущее с его QtQuick2, V8 и qpa?

Проще всего собрать linux версию Qt, поэтому именно её мы и будем собирать.

Необходимые зависимости для сборки:



  • git — все сырцы сейчас зеркалируются на gitorious'е и поэтому без git'а по просту не получится получить исходники
  • build-essential — набор из make, gcc и сопутствующих утилит
  • xcb — для сборки x11 бэкенда обязательно необходимы заголовочные файлы и библиотеки. Обратите внимание, что Qt5 переехала на xcb вместо xlib'а!
  • wayland — для сборки wayland бэкенда
  • mesa — без поддержки openGL Qt ни собираться ни работать не будет! Нужна хотя бы программная поддержка на уровне llvmpipe.
  • время — исходников много и нужен или мощный компьютер или много времени


Получение исходников



Тут всё банально, находим удобную для этих целей директорию и командуем:
$ git clone git://gitorious.org/qt/qt5.git qt5

Сразу стоит обратить внимание на то, что команда отработает подозрительно быстро. Так и должно быть! Репозиторий активно использует субмодули, которые при клонировании не скачиваются. Теперь нужно их проинициализировать.
$ cd qt5
$ perl init-repository

И можем спокойно идти пить чай. Исходники весят очень много! И иногда бывает, что gitorious обрывает соединение, тогда перезапускаем инит к ключем force.
update:
Vass сказал, что можно не целиком репу инитить и скачивать исходники быстрее.

Хочу добавить, что если вам принципиально не важен вебкит, то лучше добавить к init-repository еще и ключ --no-webkit, таким образом вы избавите себя от длительного ожидания «когда же эта жирная зараза скачается» и от вопросов типа «почему же эта жирная зараза не собирается».


Сборка:



README рекомендует следующую команду:
$ ./configure -prefix $PWD/qtbase -opensource

Но я бы еще добавил ключ -release и -fast для того, чтобы побыстрее получить нечто, что можно пощупать.
Теперь просто командуем make с указанием количества ядер и идем по своим делам. Не советую включать флаг silent, он иногда глючит!

Давайте посмотрим, что у нас получилось:



Можно заметить, что некоторые классы из QtGui переехали в QtWidgets, при этом теперь для создания окна используется QWindow вместо QWidget'а. Больше не осталось макросов вида Q_WS_X11 или Q_WS_WIN32, зато появился макрос Q_WS_QPA. Соответственно изменился вообще подход к оконным системам, теперь они переключаются не на этапе компиляции, а на этапе запуска. Следует это помнить при портировании своих приложений на Qt5. Для переключения оконных систем можно использовать ключ -platform

Для ощупывание примеров я добавил профиль Qt5 в QtCreator:



Теперь мы можем спокойно их собирать, запускать, а также пробовать собрать свои старые проги с Qt5. Пара примеров с пылу с жару:




На вид совершенно ничего не изменилось в сравнении с Qt4, хотя внутри оно уже несколько по другому работает.

Пробуем QtQuick2 и хваленый Scene Graph


Для этих целей существует утилита qmlscene, давайте запустим с помощью неё пару примеров:



К сожалению без видео невозможно оценить всю прелесть новых возможностей, для этих целей лучше поискать видео записи на ютубе. В целом же хочу сказать, что пока QtQuick2 в Линуксе несколько странно работает, во первых не скажу, что он работает плавнее, чем QtQuick1, во вторых некоторые демки не работают или падают. С чем это связано, с сыростью видеодрайверов или самого scene graph'а пока не ясно, но на видео с rapsberry всё работает плавно. В изменения API я не вникал, но сразу заметил наличие шейдеров и canvas API. Теперь еще проще делать приложения не прибегая к C++ для этого.

Щупаем QtWayland


Чтобы собрать модуль QtWayland, нужно самостоятельно выполнить в его каталоге команду qmake и make. При этом убедившись, что мы используем qmake от Qt5. После чего собирается плагин-бэкенд для wayland'а и несколько примеров wayland-композиторов. Самым интересным из них является qml-compozitor, код которого целиком написан на qml! Выглядит он на данный момент вот так:

И падает при любом удобном случае. Внутри weston'а Qt приложения работают куда стабильнее, но тоже любят падать при попытке ресайзить окно. В общем начало интересное, но работы еще непочатый край.

Кому интересно, можете попробовать вот эту демку собрать, работает великолепно, хоть сейчас делай на основе неё редактор изображений.

Общие впечатления



Qt platform abstraction, однозначно, большой шаг вперёд для написания кроссплатформенных приложений, но к нему нужно привыкать и придется отвыкать от старого подхода с #ifdef'ами. Ну и придется смириться с тем, что определение платформы будет вестить в рантайме, а не во время компиляции, что при неправильном проектировании приложения будет приводить к потерям производительности.
Разделение на модули стало гораздо более логичным. Теперь нет отдельного проекта QtMobility, все его наработки находятся в master ветке. И для написания Qt Quick приложений теперь не нужно тянуть весьма толстую библиотеку с виджетами.
Qt Scene Graph пока ещё весьма сырой и с ним нужно быть внимательнее и осторожнее.
Qt Wayland ещё очень сырой, но демонстрирует нам интересные идеи по написанию композиторов. Вполне вероятно, что на его основе ещё появятся классные проекты.
Процесс портирования приложений на Qt5, в основном, сводится к простой переборке pro файлов и добавлению туда модуля widgets и в фиксе инклудов. Ужасов переезда уровня Qt3 > Qt4 нет!
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

1

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • SLCH
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции