Почему я люблю 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, уже сейчас можно собирать под них программы!

📎📎📎📎📎📎📎📎📎📎