UnixDevСтатьи

Введение в Qt4

Автор:

Внимание: данная статья является тестовой для изучения особенностей публикования статей через сообщества на gamedev.ru, впрочем, она содержит вполне актуальную информацию для пользователей.
todo - add more cross-paltform/unix specific parts

1. Вступление.
2. Общее описание.
3. Детальное описание.
  3.1. Реализации объектной модели.
  3.2. Модульная архитектура
  3.3. Поддержка plug-in'ов.
  3.4. Поддержка встраиваемых ресурсов.
  3.5. Документация.
  3.6. Особенности использования Qt4.
  3.7. Аппаратные платформы
4. Использование.
  4.1. Примеры
4. Выводы
5.Приложения
  5.1. Недостатки струтуры библиотеки, на взгляд автора:
  5.2. Список продуктов, используемых автором, базируемых на Qt
  5.3. Коммерческое использование
  5.4. О курицах и яйцах.
  5.5. Ссылки.

1. Вступление.


  Библиотека Qt компании TrollTech существует уже добрый десяток лет, являясь базой для многих мултиплатформенных приложений, изменяясь, совершенствуюясь и меняя лицензию распространения. Летом 2005 года вышла новейшая ревизия  - Qt 4. В Qt4 введена GNU GPL лицензия сразу для трёх основных платформ(Windows, Unix, MacOS X, ранее  - только free Unix), что вывело её в ранг интересных в качестве базовой библиотеки для использования в различных исследовательких разработках, таких как примеры или тесты - единственное требование - продукты, построенные на GNU GPL версии Qt4, также должны распространяться под этой лицензией. Доступна также коммерческая версия Qt4, полностью совместимая с бесплатной (см Приложение В).
  Библиотека рассматривается автором в пределах этой статьи как вспомогательный framework для создания примеров/тестов/тестовых модулей. Использование для крупных коммерческих проектов будет рассмотрено дополнительно.

2. Общее описание.


  Библиотека Qt4 явилась продуктом многолетней разработки и переосмысления имеющихся концепции Qt3, посему и отличается она достаточно сильно от предыдущей версии, и будучи переписана практически с "нуля", является по сути новой разработкой под старым именем, включающей в себя:
 

3. Детальное описание.

3.1. Реализации объектной модели.


todo: do we need this section at all? possible subj for other article(scripting!)
  Существует две модели создания объектно-ориентированных языка программирования: Modula стиль (обработка событий методами), к которому из современных языков относятся широко известные C++, Java, C# и SmallTalk стиль, к которому относиться Objectvite-C (обработка событий посылкой сообщений). В Qt доступна реализация обеих моделей - работа через вызов методов является таковой по умолчанию для низкоуровневых объектов, для GUI же используется в основном посылка сообщений(signal-slot). Для решения различных задач может быть использована наилучшая комбинация этих моделей.

3.2. Модульная архитектура


  Начиная с Qt4, библиотка разделена на логически модули (и отдельные физические файлы в бинарном виде - dll/so).
Название модуля    Краткое описание
QtCore - базовые классы, используемые другими модулями и программами пользователя(позволяет создавать коммандострочные приложения)
QtGui  - классы графического интерфейса пользователя
QtNetwork - поддержка сети(высокуровневая реализация сокетов)
QtOpenGL - поддержка OpenGL(как видно из приложения Google Earth, возможно и создание аналогичного Direct3D вайджета)
QtSql - интерфейс для работы с SQL базами данных
QtXml - работа с XML

Дополнительные классы
QtAssistant - поддержка для файлов справки.
Qt3Support - поддержка совместимости с Qt3
QAxContainer - котейнер ActiveX (только под windows)
QAxServer - сервер ActiveX (только под windows)
QtDesigner - классы Дизайнера - редактора GUI

QtCore включает в себя несколько интересных моментов, а именно класс для работы со строками utf16, бызовые шаблоны и итераторы для работы с ними(STL и Java стиль, причём последний используется по умолчанию), поддержка многопоточности, серилизации и многое другое.
 

3.3. Поддержка plug-in'ов.


  Модульная архитектура Qt4 позволяет создавать свои расширения(plug-ins) двух типов:
  - высокоуровневый API для расширения самой Qt;
[todo] more detail
  - низкоуровневый API для расширения приложения;
[todo] more detail

3.4. Поддержка встраиваемых ресурсов.


  Появившаяся поддержка встраиваемых ресурсов приложения в мултиплатформенном программировании может намного облегчить процес их создания, исключая потеряю ресурсов, а также проблемы с endianity (все помнят, что у игровых консолей big-endian архитектура PowerPC?).

3.5. Документация.


    На взгляд автора, Qt4 является образцом того, как должны документироваться продукты, предназначенные для использорания сторонними разработчиками. Идущая в комплекте документация, вызываемая через отдельное приложение assistant или web-browser, включает в себя:
  - собрание обучающих примеров(tutorial), постепенно вводящих в мир библиотеки;
  - тематически отсортированные примеры, пошагово расписанные в документации;
  - API reference;
  - поиск, индек, возможность создания закладок в приложении assistent;
  Вся документация написана на простом и понятном английском языке(International English - без всяких назойливостей, свойственных америанскому/английскому английским), что может быть благодано воспринято отечественными разработчиками.

3.6. Особенности использования Qt4.


  Являясь библиотекой мултиплатформенной, Qt гарантированно собирается широким спектром компиляторов, таких как MSVC, GCC, SunPro, MipsPro,etc на соответсвующих платформах.

3.7. Аппаратные платформы


1. Windows i386
  Имется исходные кода для сборки компилятором MSVC(7.1), а также MingW32(GCC). Имеется поддержка XP themes, разницы во внешнем виде между сборками замечено не было.
2. Windows amd64/ia64
Из-за ошибок компилятора MS VC 8.0 beta 1 и beta 2 сборка QT4 на amd64/ia64 невозможна. Версии 4.0 и 4.1 официально не поддерживают сборку на 64битах, однако версия 4.1 успешно собирается команднострочным компилятором из финальной версии MS VC 8.0.
3. Linux, FreeBSD
Сборка производиться компилятором gcc3 или gcc4(в зависмости от аппартной платформы могут варьироваться). Внешний вид может быть идентичным аналогичнe под Windows.
4. Mac OSX
т.к. основным компилятором для OSX являеться gcc, то сборка аналогична Linux. Могут быть некоторые несоотвествия с Cocoa, но их меньше, чем в версии Qt3.
Страницы: 1 2 Следующая »

30 октября 2005 (Обновление: 11 янв 2006)