Началось тестирование Qt 5 Alpha

    Мы рады сообщить о выпуске альфа-версии Qt 5 — первого значительного релиза Qt с момента запуска сообщества Qt Project. Команда разработчиков Nokia благодарит всех энтузиастов этого комьюнити, принимающих непосредственное участие в создании Qt 5 Alpha, ведь многие возможности Qt 5 стали доступны именно благодаря их сплоченной работе. Нам очень приятно, что Qt Project стал местом, где люди объединяются, чтобы совместными усилиями развивать любимый фреймворк.

    Основной целью альфа-версии Qt 5 является получение фидбека от разработчиков, который поможет улучшить все последующие релизы. В альфа-релизе Qt 5 акцент ставился на предоставлении основных модулей Qt Essentials, формирующих базовый функционал Qt 5. Это кросс-платформенные модули, достаточные для создания большинства приложений.

    В виде бинарного пакета Qt 5 Alpha распространяться не будет, но для самостоятельной компиляции доступны исходные файлы. Разумеется, доступна и инструкция по компиляции.

    Разработка Qt 5 началась примерно 9 месяцев назад, преследуя несколько основных целей, описанных в мае прошлого года директором по развитию Qt в Nokia Ларсом Ноллом. Ниже будет список этих целей и того, что уже было достигнуто.


    Основная концепция


    Почти год назад Ларс Нолл писал:
    «Qt 5 должен стать фундаментом для реализации новых путей разработки приложений. Сохраняя инструменты по созданию Qt-приложений на языке C++, акцент стоит сместить в сторону использования C++ в основном для создания функциональности модульных бэкендов для Qt Quick».


    Мы нашли хороший способ приблизиться к этой концепции в Qt 5.0. Данная модель прекрасно работает во встраиваемых системах, где используются полноэкранные интерфейсы. Для применения этой модели в десктопах уже подготовлена большая часть фундамента, но полностью её использовать можно будет в версиях Qt 5.1 или 5.2.

    Открытая разработка


    Мы хотели вести открытую разработку Qt 5 с поддержкой мощного сообщества. После запуска Qt Project мы стали свидетелями формирования энергичного сообщества, благодаря которому в Qt 5 были исправлены многие недочёты и появились новые возможности.

    Основные архитектурные изменения


    • Перенос всех Qt-портов на использование уровня абстракции Qt Platform Abstraction layer (QPA). Данное изменение упрощает портирование Qt на другие оконные системы и устройства

      Благодаря QPA мы фундаментально изменили средства интеграции Qt с оконными системами. QPA был представлен в Qt 4.8 в качестве замены QWS/Qt Embedded, но теперь он будет задействован для всех платформ. Это решение потребовало существенной переработки огромной части кода, отвечающего за обеспечение поддержки различных платформ, но зато помогло нам создать более чистую архитектуру с абстрактным платформозависимым кодом. Это значительно упрощает перенос на новые оконные системы, и уже написанные для QNX, Android и iOS бэкенды тому доказательство.

    • Изменение архитектуры графического стека. Увеличение производительности, благодаря использованию Qt Quick и OpenGL (ES) 2.0

      В Qt 5 представлена новая графическая архитектура для Qt Quick на основе QML Scenegraph, работающего поверх OpenGL. Для работы новой архитектуры система должна поддерживать как минимум OpenGL (ES) 2.0. Теперь QtGui содержит набор классов QOpenGL*, пришедших на замену классам QGL* (хоть они и остались для обеспечения совместимости). Также в Qt 5 вводится новый класс QGuiApplication, который многим легче классов QApplication и QWindow при выполнении задач обработки на экране корневых окон.

      Видеоэффекты в Qt 5

      Поддержка QWidget сохранена, но ограничена возможностью использования бэкенда программной растеризации, бэкенда OpenGL и бэкенда для генерации и печати PDF. Поддержка привязанных к платформам бэкендов, использующих X11 или CoreGraphics, была прекращена, что позволило перейти в Qt 5 на совершенно новую графическую архитектуру, сохранив при этом полную совместимость с Qt 4.x на стороне QWidget.

    • Модульная структура репозитория для повышения гибкости и объединения декстопных и мобильных систем — возможность при необходимости добавлять и удалять пользовательские модули и полная интеграция API Qt Mobility

      В большей степени это организационный момент, который прямым образом никак не отразится на Qt-разработчиках. Однако приведение Qt к модульному виду позволит нам независимо развивать отдельные подсистемы фреймворка.

      Процесс модуляризации ещё не завершён: например, репозиторий qtbase содержит множество модулей, которые ещё только предстоит разбить на части. Так что вероятнее всего работы по разбиению на модули будут идти и после выхода Qt 5.0. Кроме того, модуляризация Qt сильно упрощает приём в состав Qt сторонних модулей.

      Qt 5 также отвечает различным специфическим для мобильных устройств требованиям, например, поддержку геолокации и работу с различными датчиками. Так, в Qt 5 будут интегрированы Qt Mobility API. Часть этих API будет входить в состав группы основных модулей Qt Essentials. Предлагая подход с модульной структурой, другие модули могут быть добавлены без особых усилий, и уже сейчас мы уверены, что список возможностей в Qt 5 богаче, чем в любой другой версии Qt.

    • Выделение в отдельную библиотеку всех связанных с QWidget возможностей

      Выделяя QWidgets в отдельный репозиторий, мы одновременно заботимся о тех, кто хочет продолжать использовать его возможности, и движемся в сторону модели, в которой все интерфейсы разрабатываются с помощью QML и Qt Quick. Отделение связанных с QWidget функций в свою собственную библиотеку — это хорошая мера достижения архитектурной чистоты Qt 5 в долгосрочной перспективе.


    
Новые возможности


    Qt 5 помимо архитектурных изменений предлагает целый ряд новых возможностей. Весь их список можно найти на специальной странице сообщества Qt Project, а здесь мы перечислим лишь основные из них.

    Qt Core

    • Появление класса QStandardPaths для определения стандартного расположения медиа-файлов и документов на каждой из поддерживаемых платформ.
    • Включение парсера JSON и оптимизированного бинарного представления для данных JSON.
    • Добавление поддержки определения MIME-типов как по расширению файла, так и по его контенту.
    • Добавление нового синтаксиса соединения сигналов и слотов, проверяющегося на стадии компиляции. Включены PCRE.
    • Редактирование и оптимизация многих структур данных для увеличения производительности.
    • Добавление поддержки C++11.


    QtGui

    Вынесение всех связанных с QtWidget возможностей в отдельную библиотеку QtWidgets. Добавление в QtGui встроенной поддержки OpenGL и появление возможности работать с корневыми окнами через класс QWindow.

    Qt Networks

    Добавление поддержки DNS-запросов. Удаление классов QHttp и QFtp, вынесенных в отдельный модуль. Исправление ряда небольших ошибок.

    Qt Widgets

    Осуществление портирования на новую архитектуру QPA с сохранением совместимости с Qt 4.x.

    Qt Quick

    • Оформление версии Qt Quick из Qt 4.x в виде модуля Qt Quick 1 для обеспечения обратной совместимости (в будущем этот модуль развиваться не будет).
    • Выделение из QML и JS частей Qt Quick, отвечающих за графику, в отдельные модули. Появление новых JS-классов QJSEngine и QJSValue, использующих движок V8, обеспечивающий большую производительность обработки JavaScript-кода.
    • Добавление ряда улучшений в движок QML, связанных с производительностью и языком.
    • Включение реализации QML Scenegraph на основе OpenGL в модуль Qt Quick.
    • Добавление поддержки шейдерных эффектов, частиц и многих других графических эффектов.


    Qt 3D и Qt Location

    Появление в Qt Essentials нескольких дополнительных модулей: в первую очередь это Qt 3D для включения трёхмерного контента и Qt Location для доступа к GPS, картам и другим локационным сервисам.

    Qt WebKit

    WebKit C++ API не изменился по сравнению с Qt 4.x, однако теперь в Qt WebKit используется более поздняя версия движка WebKit, обеспечивающая лучшую поддержку технологий HTML5 и CSS3.

    Портирование с Qt 4.x на Qt 5


    Сейчас существует проблема с бинарной совместимостью и, в меньшей степени, с совместимостью на уровне исходных кодов между Qt 4.x и Qt 5. Тем не менее, мы проделали огромную работу для лёгкого перевода существующего кода на платформу Qt 5. Например, в данный момент у нас есть Qt Creator, который может быть собран и запущен как на Qt 4.x, так и на Qt 5 без изменения исходного кода.

    Qt Creator, запущенный на Qt 5 © Qt Project

    Если вы хотите попробовать скомпилировать ваш собственный проект для Qt 5, вы можете найти детальные инструкции здесь.

    Также стоит заметить, что сейчас нет необходимости портировать собственные приложение на Qt 5, так как Qt 4.8 всё ещё продолжает поддерживаться сообществом и такими компаниями, как Digia. Однако мы полагаем, что Qt 5 содержит достаточно преимуществ, достаточных для перехода на него в конечном счете.

    Следующие шаги


    С момента начала разработки Qt 5 было сделано очень многое, и вы можете нам помочь привести Qt 5.0 к законченному виду, загрузив его альфа-версию, попробовав новые возможности и сообщив нам о своих ощущениях.

    Все отзывы следует направлять в рассылку development@qt-project.org (lists.qt-project.org) или просто сообщать о них в виде баг-репортов в нашем бегтрекере. Все патчи и багфиксы также приветствуются — отправляйте их на codereview.qt-project.org.

    Qt 5 Alpha — это первый шаг на пути к финальному релизу Qt 5, и основные усилия сейчас будут направлены на оптимизацию кода и устранение оставшихся проблем; мы постараемся завершить разработку Qt 5.0 как можно скорее.

    Ещё раз хочется сказать спасибо всем участникам сообщества Qt Project за оказанную помощь.
    Microsoft Lumia
    0,00
    Компания
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 34

      +5
      >«В виде бинарного пакета Qt 5 Alpha распространяться не будет, но для самостоятельной компиляции доступны исходные файлы»

      Честно говоря, никогда не понимал фреймворков и библиотек, которые так делают. Разработчикам что, лень сделать билд-сервер, который собрал бы исходники под десяток наиболее популярных платформ? Почему тысячи людей должны тратить по пару часов на чтение всех инструкций и сборку исходников?
      • НЛО прилетело и опубликовало эту надпись здесь
          +2
          А, то есть они потом сделают, просто пока свои инструкции по сборке тестируют?
          • НЛО прилетело и опубликовало эту надпись здесь
          0
          А я вот наоборот хорошо понимаю,
          если ты не в состоянии сам собрать фреймфорк с которым ты работаешь, может не стоит им пользоваться?

          И пара часов, это право смешно, ./configure --help читается за 10 минут. Сборка на i7 занимает максимум 15 минут.
          • НЛО прилетело и опубликовало эту надпись здесь
              +1
              ну ведь вебкит не каждому нужен?
              0
              Я вот может не в состоянии собрать Хром или Линукс. Но я вполне могу ими пользоваться.
              Ну пусть 25 минут. Почему N разработчиков должны тратить по 25 минут каждый, если это может сделать один раз бездушный билд-сервер?
                +2
                Потому что для тех кому лень собрать самом это сделают мейнтейнеры того дистрибутива под которым они сидят, правда с опозданием но сделают, зачем разработчикам FW тратить время еще на поддержание бинарей под весь зоопарк линуксов/юниксов?

                А потом начнется — а почему вы не собрали свой Qt под мой мегасуперпупер дистрибутив на котором сидят полтора человека и я?

                Кстати, мало того, кто не хочет возится тот получит свои бинари вместе с QtSDK, но не сейчас а когда подойдет срок.
                0
                Это в 5 какие-то мегаулучшения в процессе сборки? У меня на phenom x6 собирается несколько часов, при этом все ядра забиты работой. Это в 4.8
                  0
                  Нет, qbs пока еще не дорос до того, чтобы целиком Qt собрать.
                    0
                    Это вы вебкит собираете :)
                      0
                      Ну и это есть. Но и без вебкита там тоже не 15 минут, явно. У меня, по крайней мере.
                +2
                Если бы не Qt, я не познал бы с++, ждем пятерочку с нетерпением.
                  +1
                  То ли не внимательно читал, то ли действительно нету в тексте. Теперь есть возможность собирать проект в standalone-pack? Т.е. статические библиотеки.

                  Что бы можно было сделать Build и сразу передать приложение человеку, у которого не установлены библиотеки Qt.
                    0
                    Много интересного, да.
                    Но, видимо, придётся подождать 5.1 или 5.2 для инициализации переноса проекта.
                      0
                      Логично, к этому времени как раз KDE5 выйдет :) Хотя я сейчас либы стараюсь собирать сразу и с Qt4 и с Qt5
                      0
                      Интересно, они Qt Creator проапгрейдят? А то полная некастомизируемость интерфейса убивает. Даже тулбаров настраиваемых нет.
                        +2
                        Блин это единственное IDE, которое после установки не хочется настраивать. Хотите исправить сей «недостаток»?
                          0
                          Настроек по умолчанию никто не отменял:)
                        –4
                        Мне вот одно не ясно, почему вместо выпиливания qregexp, они его апгрейдят? Почему не использовать стандартный c++, зачем эта куча велосипедов?
                          +5
                          Дя обратной совместимости и чтобы продолжало работать на старых компиляторах. Максимум они могут порекомендовать не использовать его в бибиотеках компилятору реалтзована поддержка std::regexp
                            0
                            да, Вы правы, конечно же. Всегда о них забываю… Хочется более тесной интеграции со стандартным C++, но, видимо, не судьба.
                          0
                          А где можно почитать про оптимизированное бинарное представление для данных JSON в QT 5?
                            +3
                            Молодцы!!! Очень… Очень… Очень рад за них, хорошие вещи делают
                              0
                              А в 4.8-й или 5-й версии есть QLayout::widthForHeight()? До сих пор (по крайней мере до 4.7) вся система лейаутов предполагает, что ширина от высоты зависеть не может.
                                0
                                Это уже не лейаут какой-то. Странное у вас пожелание.
                                Ну а в QtQuick сделать «width: height * 2 » например ничего не мешает.
                                  0
                                  Вполне себе лейаут, основанный, как говорится, на реальных событиях :) И опять же, наш проект не использует QtQuick.
                                    0
                                    Ну тут придется применить паттерн «костыль» тогда =D. Ну а вообще имхо нужно готовится переезжать на QML потихоньку.
                                      0
                                      А QML достаточно гибок? В моём примере нужно было располагать элементы по вертикали, перенося их в следующую колонку при достижении нижней границы окна. Такое возможно с QML?
                                        0
                                        GridView например спокойно такое может вытворять.
                                          0
                                          Спасибо, учту на будущее.
                                  0
                                  Flow Layout чем плох?
                                    0
                                    Тот, который идёт в примерах к Qt? Он раскладывает элементы по горизонтали, а мне нужно по вертикали.

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое