LXF134:Что за штука
Материал из Linuxformat
|
|
|
Что за штука… Qt Quick?
- Бросок Clutter к власти был резок, но выбить Nokia с рынка интерфейсов для мобильных устройств не так-то просто, считает Пол Хадсон.
- Стоп-стоп... я сроду не слыхал ни о каком Clutter. К власти, говорите, бросался?
- Clutter такая штука, что о нем не обязательно слышать – он работает на заднем плане; но работает грандиозно!
- Что же это такое?
- Это пакет инструментов для работы с графикой: с его помощью можно рисовать на экране фигуры и заставлять их двигаться.
- Не вижу ничего особенного.
- А надо бы! Clutter работает через OpenGL, который выдаёт удивительно плавную графику даже на маломощном оборудовании. Заставить объекты двигаться не так-то просто, а Clutter запросто справляется с анимацией: масштабирует, вращает и двигает фигуры на экране.
- И рвался к власти?
- О да! В Ubuntu Netbook Remix Clutter используется для поддержки чудных интерфейсов на дешевых чипсетах Intel, применяемых в нетбуках. На системах Moblin Clutter применяется по тем же причинам: весь функционал OpenGL можно реализовать на оборудовании c низкой производительностью.
- Минуточку... не в этом ли журнале я читал, что Clutter убрали из последней версии Moblin в этом... как его?
- MeeGo. Вы правы, Intel и Nokia решили объединить проекты Moblin и Maemo, и Clutter остался не у дел. Честно говоря, жаль: Clutter успел собрать довольно мощную «группу поддержки».
- А на что его заменили?
- Предсказуемо – на Qt, собственную технологию Nokia. Правда, есть некоторая загвоздка: Qt прекрасно работает на Mac, Windows, Linux и даже мелких устройствах Symbian, но остаётся традиционным набором интерфейса пользователя – с кнопками, меню, ползунками и флажками. В Clutter всё другое: просто грузится картинка, грузится текст, и всё это движется. Поэтому интерфейсы на основе Clutter выглядят словно созданные художниками: сплошные картинки и мультики.
- Да чем плох стандартный набор? Мне нравится единообразие интерфейсов в приложениях.
- Здесь есть свои «за» и «против». Конечно, со стандартным инструментарием все приложения будут похожими – но почему, скажем, F-Spot должен быть похож на OpenOffice.org? Работа в Clutter всегда начинается с чистого листа: вы добавляете свои объекты и заставляете их делать что вам надо. С Qt вы просто пользуетесь – ну, или пользовались – стандартными виджетами Qt. Даже самые распрекрасные темы всё равно остаются стандартными виджетами Qt.
- Здесь-то и появляется Qt Quick?
- Да! Qt Quick наследует классные идеи Clutter и внедряет их в жизнь. Поэтому в качестве основы программист получит виджеты – прямоугольники, изображения и текст – а ещё таблицы, видео, жесты и даже встроенный web-браузер на базе WebKit.
- Нужна ли нам ещё одна библиотека пользовательского интерфейса? Меня давно уж бесит, что GTK-приложения плохо вписываются в мой рабочий стол Qt.
- Тут-то и начинается интересное: Qt присутствует в названии потому, что Qt Quick на Qt и построен – ему не надо загружать особые библиотеки, и на фоне Qt-приложений он выглядит вполне уместно. По сути, Quick – отделочный слой, который использует начинку Qt и придаёт ему новый шарм.
- Так это всего лишь Qt? А шума-то!
- Вам всё станет ясно, когда вы разберётесь, из чего состоит Qt Quick. Как я и сказал, Qt составляет его основу: он кроссплатформенный, он обладает всей мощью рендеринга Qt, и при желании вы можете воспользоваться всем функциональным богатством Qt. Вторая важная составляющая – Qt Creator, конструктор интерфейсов для Qt, с которым интерфейс можно создавать, просто перетаскивая элементы. Quick добавил лоска, но основная идея не меняется: вы накидываете в интерфейс изображения и прочие штуки, а затем наделяете их функциональностью.
- Вроде последней версией Qt была 4.6. Что нового? Где там вставлен Quick?
- Третья опора треножника Quick называется QML, что означает Qt Meta-Object Library и звучит страшнее, чем является по сути. А если попросту, QML позволяет создавать пользовательские интерфейсы с помощью простых текстовых описаний объектов вашего окна. Почти как при создании CSS: чтобы определить конфигурацию, размер, цвет и прочие атрибуты объекта, достаточно описать его «правильными» словами. Естественно, в окне конструктора Qt Creator всё это генерируется за вас. Остаётся добавить JavaScript-подобный код, чтобы получить необходимую функциональность.
- Ну и что здесь революционного? В GTK тоже создают интерфейсы с помощью XML. По мне, текст везде текст.
- Верно, но как насчет возможности подцепить функциональность прямо к коду Quick?
- Жуть кошмарная! Пару лет назад я пробовал Qt, но C++ меня доконал.
- Согласен, Qt порой бывает жутковат. Точнее, частенько бывает, ха-ха. Но, как я уже говорил, Quick – дело иное. Здесь используется инструмент QtDeclarative (ещё одно не в меру устрашающее название). Он действует так: вы не описываете действия объектов, а «говорите» объектам, чего хотите от них, а они уж сами «думают», как это сделать.
- Я уже сто лет так делаю! Говорю: «Хватит жрать ОЗУ, Firefox!» — а он не слушает...
- Увы, заклинания против ПО бессильны. А вот QtDeclarative работает: вы говорите, куда вставить объекты, и там они и размещаются. Если надо, чтобы объект переворачивался при наведении курсора, достаточно указать исходное (лицевая сторона) и итоговое состояние (изнанка) и связать это преобразование с событием – наведением курсора. Анимацию QtDeclarative берёт на себя. Объекты можно двигать, вращать, масштабировать, перекрашивать – можно даже задать время анимации или по ходу менять её скорость.
- И вправду просто. Причём никакого C++ — это вообще отлично!
- C++ никуда не делся: ведь Quick базируется на Qt, а тот, в свою очередь, на C++; но C++ упрятан вглубь. И это неплохо: если вам мало функций, предлагаемых Quick, можно вернуться к связке C++ и Qt. Qt готов к использованию: при желании можно конвертировать всё приложение в стандартный Qt – а можно добавлять его кусочками там и тут, по вкусу. В Qt есть класс C++ под названием QtDeclarativeView, и с его помощью можно читать QML и произвольно манипулировать им.
- О нет, C++ лучше не трогать, упрятали — и ладно.
- Главное, что у вас есть выбор. Хотите пользоваться QtDeclarative – пожалуйста. Хотите спуститься в C++ – к вашим услугам. А можно их сочетать – тоже работает; решать вам.
- Так, руки уже чешутся попробовать. Что надо запустить?
- Большой недостаток Quick – он будет доступен только в Qt 4.7, который сейчас находится в стадии разработки у Nokia. Есть основания надеяться, что выпуск состоится в ближайшие несколько недель, тогда и попробуете. Qt 4.7 включает Qt Creator 2.1 с поддержкой QML – и вы сможете узнать, как стряпаются интерфейсы перетаскиванием.
- А можно почитать об этом, чтобы слегка подготовиться?
- Конечно! Лучше всего начать с http://doc.qt.nokia.com/4.7‑snapshot/declarativeui.html – там описаны различные функции, собрано несколько руководств и даже приведено несколько примеров сопряжения QML и C++.