Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Отчего я люблю Qt и вы все тоже обязаны его любить

Anna | 24.06.2014 | нет комментариев

Позже суток жизни поста я начал примечать утрату кармы, так что предварительно умоляю помилование за допустимо недопустимый жанр изложения в статье и субъективизмЗдравствуй, Програпрогр!Последнее время я не мог не обратить внимание на знаменитость темы Qt на прогрике, но тем не менее, в комментах продалжают встречаться люди, которые говорят искренне лживые и непонятные вещи. Этим постом я хотел развеять малость заблуждений о Qt и рассказать, отчего же ты должен пересесть со своих Java/Obj-C/.NET на мягкий и мохнатый Qt.

Под катом будет много ощущений, субъективностей и моих скромных суждений на счет самого восхитительного фреймворка для разработки приложений. Однако, я постараюсь добавить интересностей, Дабы моя статья купила хоть какой-то техническополезный толк. Верю, получится увлекательное чтиво и вам понравится.

Ну, что. Поехали?

Вешч №1. С API

Ни для никого не секрет, что у Qt дюже комфортное API, а определеннее говоря, модуль qtbase содержит довольное число классов для большинства повседневных задач (Qt — это огромнее, чем GUI фреймворк, лол). Я теснее говорил об обертках STL-ных контейнеров в своей статье трехгодичной давности — тыцк. Классы для работы со строками, отладочный итог, и много-много чего, так же included.

QString fruits = "apple, banana, orange, banana";
QStringList fruitsList = fruits.split(", ");
qDebug() << fruitsList; // выведет в консоль [ "apple", "banana", "orange", "banana" ]
fruitsList.removeDuplicates();
fruits = fruitsList.join(", ");
qDebug() << fruits; // выведет в консоль "apple, banana, orange"

Стоит сказать, что у Qt также есть модули для комфортной работы с XML, базами данных (с интеграцией аппетитной-превкусной кьютешной системой MVC), OpenGL, аудио/видео-работы (Phonon), сетевого программирования, WebKit2. Для больниства задач, которые стоят перед среднестатистическим планом — этой кухни хватает в 90% случаев, а с модулями редко случаются з*ебы.

С учетом моей любви к C , я дюже и дюже крепко доволен тем, какую поддержку разных нетривиальных пророческой Qt представляет на кросс-платформенном ярусе. Пару раз доводилось разруливать особенно непонятные моменты, но это такое.

Вешч №2. Qt Quick

Qt Quick — это мегасмачный подход к созданию графического пользовательского интерфейса. Применяя декларативный язык QML (угадайте, где его придумали, лол), схожий на JavaScript, дозволено добиться высокой продуктивности при прототипировании интерфейса в приложениях всякий трудности. А самое комичное, что при таком ходе дел, с прототипированием интерфейса может совладать даже дизайнер, тот, что знает синтаксис JavaScript. Это все были бы пустые слова, если бы я не показал вам пример функционального кода (огромнее дозволено обнаружить на Qt Project — тамц).

image

import QtQuick 2.0

Rectangle {
    id: page
    width: 320; height: 480
    color: "lightgray"

    Text {
        id: helloText
        text: "Hello world!"
        y: 30
        anchors.horizontalCenter: page.horizontalCenter
        font.pointSize: 24; font.bold: true
    }

    Grid {
        id: colorPicker
        x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4
        rows: 2; columns: 3; spacing: 3

        Cell { cellColor: "red"; onClicked: helloText.color = cellColor }
        Cell { cellColor: "green"; onClicked: helloText.color = cellColor }
        Cell { cellColor: "blue"; onClicked: helloText.color = cellColor }
        Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor }
        Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor }
        Cell { cellColor: "black"; onClicked: helloText.color = cellColor }
    }
}

Имплементация объекта Cell весьма банальна и определена таким образом

import QtQuick 2.0

Item {
    id: container
    property alias cellColor: rectangle.color
    signal clicked(color cellColor)

    width: 40; height: 25

    Rectangle {
        id: rectangle
        border.color: "white"
        anchors.fill: parent
    }

    MouseArea {
        anchors.fill: parent
        onClicked: container.clicked(container.cellColor)
    }
}

В этом коде нет ни строчки С и он типично работает. Годно, не так ли? Я себя даже кудесником от этого почуствовал — проще в магазин за хлебом сходить, чем приложение вот такое склепать. Тем не менее, в трудных приложениях не хватает одного 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, теснее теперь дозволено собирать под них программы!

Вывод

Я думаю вы понимаете, что Qt — это правда резко и позже прочтения статьи вы полюбили его так же, как и я.
Спасибо за внимание!
Ваш, namespace.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB