qt5 c что это
А давайте пощупаем Qt5
Выход первой альфы Qt5 уже не за горами, но зачем нам ждать этого момента, если мы можем прямо сейчас окунуться в ближайшее будущее с его QtQuick2, V8 и qpa?
Проще всего собрать linux версию Qt, поэтому именно её мы и будем собирать.
Необходимые зависимости для сборки:
Получение исходников
Тут всё банально, находим удобную для этих целей директорию и командуем:
Сразу стоит обратить внимание на то, что команда отработает подозрительно быстро. Так и должно быть! Репозиторий активно использует субмодули, которые при клонировании не скачиваются. Теперь нужно их проинициализировать.
И можем спокойно идти пить чай. Исходники весят очень много! И иногда бывает, что gitorious обрывает соединение, тогда перезапускаем инит к ключем force.
update:
Vass сказал, что можно не целиком репу инитить и скачивать исходники быстрее.
Хочу добавить, что если вам принципиально не важен вебкит, то лучше добавить к init-repository еще и ключ —no-webkit, таким образом вы избавите себя от длительного ожидания «когда же эта жирная зараза скачается» и от вопросов типа «почему же эта жирная зараза не собирается».
Сборка:
README рекомендует следующую команду:
Давайте посмотрим, что у нас получилось:
Для ощупывание примеров я добавил профиль 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 нет!
Урок №1. Введение в Qt и установка Qt Creator
Обновл. 16 Сен 2021 |
На этом уроке мы познакомимся с кроссплатформенным фреймворком Qt и установим IDE для работы с ним.
Введение в Qt
Qt является кроссплатформенным (не зависящим от платформы/ОС) фреймворком для разработки приложений на языке С++. С помощью Qt были разработаны такие известные приложения, как: KDE, Opera, Google Earth и Skype. Впервые Qt был опубликован в мае 1995 года.
Qt5 подразумевает двойное лицензирование, а это означает, что Qt может быть использован в некоммерческих целях для создания приложений с открытым исходным кодом, а также как лицензия для коммерческих клиентов. За счет использования собственного фреймворка и мощного инструментария Qt позволяет быстро и удобно создавать собственные кроссплатформенные приложения. Кроме того, команды разработчиков получают возможность работать на разных платформах, используя при этом общие инструменты для разработки и отладки. Весь инструментарий Qt с открытым исходным кодом вы можете найти на сайте qt.io.
Изначально Qt был разработан норвежской компанией по разработке программного обеспечения Trolltech. В 2008 году компанию приобрела Nokia. Спустя четыре года в августе 2012 программные технологии Qt выкупила финская компания-разработчик Digia. Сейчас Qt развивается компанией QT Company, которая является дочерней компанией Digia, и как проект Qt под открытым исходным кодом с участием отдельных разработчиков и фирм.
Установка Qt Creator в Linux
Шаг №1: Мы будем устанавливать IDE с открытым исходным кодом. Для этого переходим по ссылке и выбираем самую свежую версию (на момент написания данной статьи — это Qt 5.13):
Переходим на вкладку «Права» и ставим галочку возле пункта «Разрешить выполнение файла как программы» :
Закрываем «Свойства» и запускаем программу.
Если учетной записи в Qt Account у вас еще нет, то её можно создать сейчас: для этого перейдите по соответствующей ссылке в установщике, и вы будете перенаправлены на сайт qt.io в соответствующий раздел, или просто используйте кнопку «Next» — вы сможете это сделать на следующем шаге:
Шаг №3: Здесь необходимо ввести логин и пароль от Qt Account или создать Qt Account, если его у вас еще нет. Кнопка «Next» переводит нас на следующий этап:
Добро пожаловать в настройки Qt 5.13.0! Для перехода к следующему шагу нажимаем «Далее >» :
Шаг №4: Выбираем каталог для установки Qt 5.13.0. Обратите внимание, адрес каталога указывается латинскими буквами (без кириллицы) и без пробелов! После того, как выбрали каталог, нажимаем «Далее >» :
Шаг №5: Выбираем компоненты, которые хотим установить. Если на данном этапе у вас нет уверенности в выборе конкретных компонентов, то добавление и удаление можно будет сделать позже, после установки программы:
Шаг №6: Принимаем лицензионное соглашение:
И нажимаем на кнопку «Установить» :
Вот примерно следующее вы должны увидеть при запуске Qt Creator:
Поздравляем! Qt Creator установлен.
Установка Qt Creator через командную строку в Linux
Еще одним альтернативным и простым способом установки Qt Creator в Linux на основе Debian является установка из пакетов. Если при работе с Linux вы используете терминал, то перед скачиванием и установкой Qt Creator программа запросит пароль пользователя root (команда sudo без дополнительных опций). Только после этого начнется скачивание и извлечение файлов. Обычно, пакеты Linux не содержат последней версии Qt и их необходимо обновить. Ниже приведен алгоритм действий, позволяющий за 4 шага установить Qt Creator через терминал в Linux.
Шаг №1: Обновление набора утилит для установки, удаления, обновления, поиска пакетов в Linux.
Шаг №2: Скачивание и установка Qt.
$ sudo apt install qt5-default
Шаг №3: Установка Qt Creator.
$ sudo apt install qtcreator
Шаг №4: Установка тестовых программ.
$ sudo apt install qtbase5-examples qtdeclarative5-examples
Установка Qt Creator в Windows
Сначала нам нужно скачать установочный пакет Qt. Вы можете это сделать, обратившись к оф. сайту qt.io. Либо же воспользоваться альтернативным вариантом и скачать с какого-нибудь «зеркала» (например, c этого, полный список всех «зеркал» находится здесь):
Нажимаем на official_releases/ и переходим к online_installers/ :
Нажимаем на online_installers/ и скачиваем файл qt-unified-windows-x86-online.exe :
Запустив скачанный файл, видим перед собой приветствие «Qt Online Installer». Нажимаем «Next» :
Далее у нас спросят о наличии Qt Account. Можно смело нажимать «Skip» и двигаться дальше:
Теперь нам нужно указать путь установки Qt. Для простоты я выбрал C:\Qt :
После того, как инсталлятор скачает и установит все необходимые компоненты, можно будет перейти к непосредственному написанию кода для нашего приложения.
Создание проекта
Вначале нам необходимо создать проект. Сразу скажу, что наша программа будет консольным приложением. Для этого выберите «Файл» > «Создать файл или проект…» или можно воспользоваться сочетанием клавиш Ctrl+N :
На следующем шаге нужно будет указать имя для нашей будущей программы и папку, где будут располагаться файлы проекта. У меня это My_QtApplication и C:\dev\Qt_Project соответственно:
На следующем шаге без изменений, поэтому просто нажимаем кнопку «Далее» :
Теперь нам нужно выбрать набор компиляторов, который мы будем использовать для сборки нашего проекта. Я настоятельно рекомендую выбрать Desktop Qt 5.13.0 MinGW 32-bit (сняв при этом отметки с остальных, если они у вас есть):
На последнем шаге нажимаем «Завершить» :
Теперь вы можете увидеть автоматически сгенерированный Qt-проект консольного приложения. Давайте рассмотрим его детально:
Мысли по поводу Qt 5
Qt 4.0 была выпущена в июне 2005 года, почти шесть лет назад. Многое изменилось в индустрии программного обеспечения за эти годы. Тогда разработка приложений шла в основном на настольных системах, сейчас же мобильные устройства, подключенные к сети, становятся все более популярными. Технология пользовательского интерфейса перешла от статических виджетов к плавным сенсорным. Начиная с Qt 4.0, мы выпустили семь минорных версий Qt, следуя потребностям разработчиков и пользователей, например, разработав Qt Quick. С растущей пользовательской базой Qt, растёт потребность во встроенных, мобильных приложениях и UI-разработчиках.
Кроме того, в будущем, чтобы быть ведущим фреймворком для разработчиков в нескольких отраслях, Qt необходимо непрерывно обновляться и развиваться. Qt 4 был эволюцией, поэтому я задумался о том, как могут выглядеть следующие версии Qt с технической точки зрения. Последние годы мы работали над созданием основы для следующей мажорной версии. Я вижу в ней Qt Quick, QML Scenegraph и проект Lighhouse в сочетании с усилением акцента на Qt Webkit как фундамент, который мы планируем использовать для перехода к новому мажорному релизу Qt.
Учитывая, что Qt управляется открыто, я хотел бы поделиться своими размышлениями с сообществом Qt, чтобы начать дискуссии о технической архитектуре Qt 5.
Цели следующей мажорной версии Qt (Qt 5)
Сделать несложным переход с Qt 4 на Qt 5
В Qt 5 мы планируем сделать некоторые изменения в API и оставить позади ограничения из прошлого, чтобы было лучше в будущем. Для тех из вас, кто был с нами при переходе Qt 3 на Qt 4, мы не планируем повторять подобные трудности перехода в Qt 5. Мы считаем, что можем сохранить совместимость в большинстве случаев, но потери бинарной совместимости не избежать. Мы сделаем все, чтобы избежать нарушения каких-либо основ и сделать переход с Qt 4 на Qt 5 очень простым для большинства приложений.
Qt 5 будет сосредоточено на небольшом наборе операционных систем/платформ (т.е. платформ Wayland и X11 на Linux, Mac и Windows). Общее число платформ будет зависеть от усилий открытого сообщества, вложенных в Qt. Другие операционные системы, в настоящее время поддерживаемые Qt 4 (особенно коммерческие системы UNIX), не будут в центре внимания для Nokia. Целью проекта Qt 5 является предоставление наилучшей функциональности на каждой платформе, что означает, что Qt начнёт предлагать более дифференцированные возможности на разных ОС, в то же время предлагая эффективное повторное использование большей части кода на разных платформах.
Открытая разработка вместе с вами при сильной поддержке Nokia
Другим важным изменением в Qt 5 будет модель разработки. Qt 4 был разработан в основном в Trolltech и Nokia, затем опубликован для сообщества разработчиков. Qt 5 мы планируем развивать открыто, как проект с изначально открытым исходным кодом. Не будет никаких различий между разработчиками, работающими в Nokia и другими участниками.
Если вы или ваша компания хотите принять участие в разработке Qt 5, пожалуйста, присоединяйтесь к саммиту разработчиков Qt в Берлине с 16 по 18 июня. Это основное место, где мы хотели бы обсудить вместе с вами планы и идеи для Qt 5.0 и 5.1. Некоторые из нас также будут на саммите разработчиков Ubuntu на этой неделе и конференции MeeGo в конце этого месяца.
Обзор
Qt 5 должна быть основой для нового способа разработки приложений. Пока вся мощность нативности Qt в использовании C++, предлагается сфокусироваться на переходе к модели, где C++ используется в основном для реализации модульного бэкэнда функциональности для Qt Quick.
В Qt 5 мы должны поместить Qt Quick в центр Qt без разрушительных последствий для существующего кода, разработанного для Qt 4. Это будет, скорее, реструктуризацией, что позволит нам изменить способ разработки приложений в будущем.
Хотя традиционные Qt/C++ приложения и будут продолжать работать с Qt 5, но произойдут некоторые фундаментальные изменения в том, КАК приложения могут быть и будут написаны.
Следует ожидать, что с течением времени все интерфейсы будут написаны на QML. JavaScript основным в сообществе Qt, и мы должны ожидать, что большая часть логики приложений и даже целые приложения будут написаны на JavaScript, а не C++. Ожидается, что многие разработчики приложений на уже сейчас начнут с QML и JavaScript, и будут реализовывать функции на C++ лишь тогда, когда это требуется. В некоторых случаях, вся мощь C++ API, предлагаемая Qt, может быть использована для реализации критичных по времени и сложных по функциональности приложений.
Хотя мы и предлагаем поддержку основанной на QWidget модели программирования и набор API для совместимости, в долгосрочной перспективе мы также видим QML как будущее пользовательских интерфейсов на рабочем столе. Решением здесь является основанные на QML наборы компонентов, которые интегрируются с нативными API стилизации на настольных платформах.
Четыре больших архитектурных изменения
Qt Components и Qt Mobility теперь станут неотъемлемой частью платформы Qt, а не модулями со специальным статусом.
Бета-версии доступны к концу 2011 года. Финальный релиз в 2012 году
То, что мы не хотим слишком изменить основы Qt и тот факт, что мы хотим сделать переход существующих приложений на Qt 5 простым, заставляют нас быть осторожными с количеством изменений и существующей базой кода. Большую часть изменений мы уже вам предложили, а также мы начали работы над реструктуризацией нашей кодовой базы в новую модульную структуру, где каждая динамическая библиотека находится в своем собственном репозитории. Мы считаем, что мы должны удалить некоторые очень редко используемые API, которые сохранены для совместимости, но останавливают последующее развитие. Мы также считаем, что бета-версии будут доступны к концу года и окончательный релиз Qt 5.0 будет выпущен в 2012 году.
На прошлой неделе был выпущен Qt SDK с обновлениями, которые планируется использовать в предстоящем году для целевых устройств с Nokia Symbian и MeeGo. Qt 5.0 сосредоточена вокруг следующего поколения приложений и пользовательских интерфейсов, но серьёзных сложностей с переходом на эту версию возникнуть не должно.
Помогите нам ускорить разработку
Для тех из вас, кому интересны подробности, вот ссылка на официальный документ, более подробно описывающий некоторые из идей. Ничего из этого документа не закреплено окончательно, но он отражает наши текущие направления и мысли.
Вы можете следить за нашей работой в хранилищах Qt. Мы намерены поддерживать master-ветку пригодной для использования в любое время, по крайней мере на Linux с Wayland и X11 (плагин xcb lighthouse).
Возможно, что некоторые функции не будут в полной мере доступны в Qt 5.0 и появятся лишь с течением времени в последующих версиях, но надеемся, что существенной регрессии функциональности для Qt 4.8 не будет (да, мы намерены выпустить еще одну промежуточную версию в серии Qt 4.x в течение следующих нескольких месяцев!). При разработке Qt 5 мы должны сделать все от нас зависящее, чтобы сохранить совместимость с Qt 4, так чтобы портирование приложений на Qt 5 было как можно более простым. Так что, если вы хотите помочь или поучаствовать в разработке Qt 5, мы ждем вас на саммите разработчиков Qt в Берлине в июне этого года.
Почему я люблю Qt и вы все тоже должны его любить
После суток жизни поста я начал замечать утечку кармы, так что заранее прошу прощение за возможно недопустимый стиль изложения в статье и субъективизм
Последнее время я не мог не обратить внимание на популярность темы Qt на хабрике, но тем не менее, в комментах продолжают встречаться люди, которые говорят откровенно лживые и непонятные вещи. Этим постом я хотел развеять малость заблуждений о Qt и рассказать, почему же ты должен пересесть со своих Java/Obj-C/.NET на мягкий и пушистый Qt.
Под катом будет много впечатлений, субъективностей и моих скромных мнений на счет самого замечательного фреймворка для разработки приложений. Впрочем, я постараюсь добавить интересностей, чтобы моя статья приобрела хоть какой-то техническополезный смысл. Надеюсь, получится занимательное чтиво и вам понравится.
Вешч №1. С++ API
Ни для никого не секрет, что у Qt очень удобное API, а конкретнее говоря, модуль qtbase содержит достаточное количество классов для большинства повседневных задач (Qt — это больше, чем GUI фреймворк, лол). Я уже говорил об обертках STL-ных контейнеров в своей статье трехгодичной давности — тыцк. Классы для работы со строками, отладочный вывод, и много-много чего, так же included.
Стоит сказать, что у Qt также есть модули для удобной работы с XML, базами данных (с интеграцией вкусной-превкусной кьютешной системой MVC), OpenGL, аудио/видео-работы (Phonon), сетевого программирования, WebKit2. Для больниства задач, которые стоят перед среднестатистическим проектом — этой кухни хватает в 90% случаев, а с модулями редко случаются з*ебы.
С учетом моей любви к C++, я очень и очень сильно доволен тем, какую поддержку различных нетривиальных вещей Qt представляет на кросс-платформенном уровне. Пару раз приходилось разруливать особо непонятные моменты, но это такое.
Вешч №2. Qt Quick
Qt Quick — это мегасмачный подход к созданию графического пользовательского интерфейса. Используя декларативный язык QML (угадайте, где его придумали, лол), похожий на JavaScript, можно добиться высокой производительности при прототипировании интерфейса в приложениях любой сложности. А самое забавное, что при таком ходе дел, с прототипированием интерфейса может справиться даже дизайнер, который знает синтаксис JavaScript. Это все были бы пустые слова, если бы я не показал вам пример функционального кода (больше можно найти на Qt Project — тамц).
В этом коде нету ни строчки С++ и он нормально работает. Годно, не так ли? Я себя даже волшебником от этого почуствовал — проще в магазин за хлебом сходить, чем приложение вот такое склепать. Тем не менее, в сложных приложениях не хватает одного QML и мы объединяем его с С++. Об этом шла речь в многих статьях хаба Qt Software — например, тамц.
Вешч №3. Сообщество
Ну вот мы и дошли до приятного момента. Если говорить о мне, то я работаю с Qt относительно мало — всего 5 лет. Qt проводит ежегодные мероприятия — Qt Developer Days и Qt Contributors’ Summit. Я был на каждом из них по одному разу, в прошлом году, и мне очень понравилось — уровень подготовки высокий, а впечателения доставляют. Мне также приходилось общаться с «ветеранами» Qt — людьми, которые посещали саммит на протяжении 10 лет. Представляю, насколько круто на своих глазах видеть рост такого проекта и быть в эпицентре всей разработки — просто смачненько.
К новичкам эти люди очень терпимы и относятся хорошо, мне было очень легко и прятно навести контакты с такими замечательными людьми. На Qt Project есть форумы, где каждый желающий может получить ответ на волнующий его вопрос. Забавно, но девнет действительно очень живой и там реально отвечают на вопросы, возникающие, в процессе познания Qt.
Вешч №4. Открытый исходный код и code review
Сорец кьюта открыто разрабатывается в основном, компаниями Digia (комм. поддержка +), KDAB, ICS и энтузиастами-разработчиками. Хостится все это дело на Gitorious — тадамц. Чтобы внести свою лепту в развитие проекта, нужно пройти строгую проверку кода — автоматизированную (соблюдения стиля кода, о котором я уже писал ранее — птссс) и человеческую — твой код будут смотреть бородатые дяди, которые не доверяют тебе и будут искать в твоем коде бэкдоры. Все это достаточно сложный процесс (заморочки с Git / ревизии на Review Board) и я наверное напишу об этом статью на днях.
У меня, к слову, есть пару коммитов в дереве qtbase, так что можете спрашивать в лс — попробую ответить на вопросы.
Вешч №5. Динамика развития проекта
Qt разрабатывается уже много лет, с конца 90-х. За это время его коммерческой версией уже успели наиграться такие компании, как Trolltech и Nokia, а сейчас этим занимается Digia. Но одно можно точно сказать, проект живет и процветает. Еще несколько лет дизайн все писали на виджетах (С++ классы, все до единого основанные на QWidget), а сегодня его может сделать и маленький ребенок. Думаю, не стоит говорить, что параллельно с ним активно развивается мошнейшая вешч — Qt Creator, который сегодня радует не только Qt программистов!
^ классненький Qt Creator, в котором можно творить чудеса и тебе за это ничего не будет.
К сожалению, у меня нету строгих чисел, но говорят, что код каждый день оптимизируется, а codebase тщательно наращивается — добавляются новые фичи и исправляются старые баги (в этом то я успел убедиться уже много раз). Все это очень годно и не может не радовать.
К тому же, сейчас идет активное развитие платформ iOS, Android, Windows Phone, уже сейчас можно собирать под них программы!