Журнал LinuxFormat - перейти на главную

LXF72:Qt

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание


Qt 4 Open Source Edition

Как будет выглядеть рабочий стол следующего поколения KDE — 4.0? Выпуск компанией Trolltech четвертой версии Qt, своей основной разработки, позволяет Грэхэму Моррисону (Graham Morisson) поразмышлять над ожидаемым ходом событий.

Qt, разработанный компанией Trolltech — это библиотека для создания кроссплатформенных приложений, на которой построен KDE. Она полностью отвечает за внешний вид и восприятие среды KDE, равно как и за разнообразие ее возможностей.

Нет, Qt сама не определяет то, как должно выглядеть приложение, просто программа предоставляет инструментарий, с помощью которого все это можно спроектировать. Данный набор средств определяет, что возможно осуществить, именно поэтому выпуск новой версии Qt подразумевает появление множества новых возможностей для самой KDE.

Взаимосвязь с KDE — отдельный разговор, ведь Qt — это, прежде всего, отдельный и самостоятельный продукт. Иногда легко забыть, что сам по себе Qt является кросс-платформенным интерфейсом для разработки программ, причем кроме версии для Linux, существуют GPL-версии для Mac OS X и Microsoft Windows.

Дизайнер интерфейсов

Qt Designer поставляется с каждым релизом Qt и является инструментом визуального проектирования GUI. Внешне он похож на интегрированную среду разработки, например, Eclipse. В недалеком прошлом даже планировалось встроить некоторые из его возможностей непосредственно в интегрированную среду разработки KDevelop.

В предыдущих версиях окно Qt Designer растягивалось на весь рабочего стола, но в этот раз Trolltech решили внедрить несколько более своеобразных идей, поэтому рабочая область ограничена несколькими «паркуемыми» (dockable) окнами. Тот же самый подход использует Gimp, и, несомненно, приложение становится более удобным в использовании.

Процесс разработки графического интерфейса пользователя не сильно изменился: вы все еще создаете пустой холст для вашего окна (при необходимости используя для этого встроенный мастер) и добавляете графические элементы интерфейса («виджеты») из палитры или меню. Небольшие изменения заметны в том, что, при выборе элемента, курсор перетаскивает на холст именно изображение конечного элемента, чтобы можно было представить, как все будет выглядеть в реальности. Этот подход работает отлично, и вы можете с легкостью просмотреть палитру, чтобы найти наиболее подходящий для данного проекта элемент.

Наиболее сильным изменениям в Qt Designer подвергся способ определения событий интерфейса. Qt использует систему сигналов и слотов, чтобы описать взаимодействие одного элемента с другим. Например, в момент изменения состояния кнопка-переключатель (radio-button) генерирует соответствующий сигнал, в данном случае — Toggle. Этот сигнал может быть связан со слотом на элементе, отвечающим за переключение страниц — Tab. Каждая такая связь отображается в специальном редакторе сигналов и слотов, но вы можете рассмотреть их непосредственно в графическом интерфейсе пользователя. Designer рисует линии между элементами, чтобы показать взаимодействие между ними (см. экранный снимок). Это, наряду с усовершенствованным GUI, сделало создание пользовательских интерфейсов с помощью Qt Designer намного проще, чем в Qt3.

Обновленный API

Qt Designer, безусловно, является полезной программой для разработки пользовательского интерфейса, но большинство из новых существенных особенностей Qt 4 коснулись именно API. С его помощью программисты внедряют технологию Qt, обычно используя при этом язык программирования C++, и именно изменения в API непосредственно влияют на то, как будет вести себя конечное приложение.

Самым заметным изменением в новом API является то, что единая в прошлом библиотека Qt теперь разбита на десять меньших библиотек, например QtXML и QtSql. наиболее значимая из них — библиотека QtCore, которая содержит многие из наиболее полезных возможностей Qt, но без какого-либо кода графического интерфейса. Если Вы когда-либо разрабатывали Qt-приложение, вы, должно быть, знаете, что огромный класс QApplication был тесно связан с GUI. Чтобы избавиться от этого ограничения, Trolltech разбила QApplication на два отдельных класса. Это означает, что вы, наконец, сможете использовать легендарные функции Qt для работы со строками и файлами без необходимости обременять ваше программное обеспечение ненужным кодом для графического интерфейса пользователя.

Легенда о Короле Артуре

Когда Вы создаете приложение с графическим интерфейсом, знаете ли Вы, на что оно будет похоже? Наиболее ожидаемая особенность нового Qt имеет далеко не самое интересное название. Никаких «пылающих закатов над пирамидами» — средство визуализации Qt 4 названо совсем просто: Arthur. Такой вот ответ Qt на Cairo.

Arthur представляет собой обобщение подпрограмм визуализации Qt 3. Мало того, что это позволяет не зависеть от аппаратных средств, это также означает, что система визуализации может быть ускорена при помощи «железа» с поддержкой OpenGL, аналогично Cairo, которая может быть ускорена при использовании библиотеки Glitz.

Вы можете видеть Arthur в действии во многих демонстрационных приложениях Qt. Наиболее впечатляющие из них используют искажение векторных данных, например в одном из приложений шрифт преобразуется стеклянным пузырьком-лупой, увеличивающей текст, попадающий в поле ее действия. Кривые безье и траектории генерируются наряду с цветовыми градиентами и различными преобразованиями. Каждая подпрограмма вычисляется на уровне устройства (уровне аппаратной абстракции Qt4), а не преобразуется в растровый формат главной библиотекой; в то время как OpenGL используется для непосредственного ускорения многих операций. Интересно будет посмотреть, как KDE сможет использовать тот потенциал, который предлагает Arthur, поскольку именно эти функциональные возможности и были столь успешными для Apple в OS X.

Еще одно большое изменение в API — расширение среды разработки, которое очень похоже на общепринятую технологию «модель-представление-контроллер» (Model-View-Controller или MVC) от Smalltalk. Эта технология представляет собой метод разделения данных приложения (модели) от пользовательского интерфейса (представление) и логики программы (контроллера), которая ими управляет. В связи с уклоном Trolltech в область пользовательских интерфейсов, он слит воедино с объектами логики, таким образом, они отличны только лишь от данных приложения.

Результатом этих изменений стал новый тип объекта, названный Interview, который предназначен для обработки взаимодействия между компонентами. Практически, это означает, что различные компоненты пользовательского интерфейса, такие как списки или таблицы, могут совместно использовать одни и те же данные программы для мгновенного обновления.

Interview начинает обретать больший смысл при использовании его вместе с новыми возможностями модуля SQL, так как использование базы данных SQL в качестве единственного источника данных для графического приложения улучшит производительность приложения, равно как и его удобство и простоту использования.

Разделение данных и GUI-кода, повидимому, является одной из главных отличительных черт Qt 4. Для разработчиков, которые не хотят углубляться внутрь еще одной парадигмы программирования, API обеспечивает несколько готовых виджетов, которые могут использовать все преимущества архитектуры модели/представления, не заставляя вас понимать ее.

Достаточно?

Ну и последнее, главное новшество в Qt 4 — замена для старого класса Main Window. Старая версия использовала произвольный и непоследовательный подход к панелям инструментов, хотя они необходимы практически во всех приложениях, за исключением самых простых.

Это было приведено в порядок с помощью двух различных классов: одного — для панели инструментов, другого — для присоединяемых виджетов. Ну и конечно было определено, каким образом и где эти элементы должны находиться в основном окне приложения. Подобные изменения есть практически во всем API библиотеки Qt 4. При просмотре кода можно увидеть огромное количество рационализированных, упрощенных и переименованных пространств имен (namespaces) — то есть все изменения направлены на то, чтобы сделать программирование при помощи Qt 4 намного проще.

Принимая во внимание все изменения — некоторые из которых носят весьма фундаментальный характер - переделать Qt 3 приложение в приложение Qt 4 было бы достаточно сложным занятием — заметил Маттиас Эттрих (Matthias Ettrich), вице-президент по разработке компании Trolltech. Многие из синтаксических изменений могут быть автоматизированы с помощью маленькой утилиты под названием Qt3to4. Она весьма успешно справляется со своей задачей применительно к небольшим проектам, построенным с помощью Qt Designer предыдущей версии Qt, но что-то более серьезное все же придется менять вручную, изучая руководство по переносу приложений, что будет куда более трудоемким процессом, чем относительно безболезненный переход от Qt 2 к Qt 3. реальное доказательство этого мы получим от группы разработчиков KDE 4, когда они сообщат нам о ходе разработки.


Возможности средства визуализации Arthur

  • Векторное искажение позволяет вам управлять шрифтами и другими векторными изображениями в режиме реального времени.
  • Градиенты теперь определяются как плавный, а не дискретный, переход от одного цвета к другому.
  • При аффинных (родственных) преобразованиях векторных изображений сохраняется взаимное расположение между точками.
  • Пути (paths) теперь являются частью средства визуализации и позволяют вам создавать свои собственные векторы.
  • По возможности используется ускорение OpenGL, включая объединение трехмерных объектов.
  • Классы изображений Qt 4 могут использоваться как текстуры OpenGL без каких-либо преобразований.

Самое главное

API, лежащий в основе KDE, также используется для разработки C+±приложений для Windows, Mac OS X и Linux. См. также: коммерческую версию Qt или GTK.

  • Разработчик: Trolltech
  • Сайт: www.trolltech.com
  • Цена: бесплатно по лицензии GPL

Пол считает…

Идея связанных виджетов, кажется, была позаимствована из Xcode от Apple, но я надеюсь — и это ещё важнее — на сотрудничество Trolltech с командой разработчиков Cairo, что позволит избежать дублирования работы.

Вердикт Linux Format

  • Возможности — 9/10
  • Производительность — 7/10
  • Простота использования — 8/10
  • Документация — 9/10

Qt является одной из основных причин привлекательности Linux и многое зависит от ее успеха. К счастью, данное обновление не разочаровывает.

  • Рейтинг — 9/10
Персональные инструменты
купить
подписаться
Яндекс.Метрика