LXF72:Qt
Gnomba (обсуждение | вклад) |
Gnomba (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | __TOC__ | ||
== Qt 4 Open Source Edition == | == Qt 4 Open Source Edition == | ||
''Как будет выглядеть рабочий стол следующего поколения KDE — 4.0? Выпуск компанией Trolltech четвертой версии Qt, своей основной разработки, позволяет '''Грэхэму Моррисону''' (Graham Morisson) поразмышлять над ожидаемым ходом событий.'' | ''Как будет выглядеть рабочий стол следующего поколения 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 | ||
+ | обеспечивает несколько готовых виджетов, которые могут использовать все преимущества архитектуры | ||
+ | модели/представления, не заставляя вас понимать ее. |
Версия 15:15, 10 марта 2008
|
|
|
Содержание |
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 обеспечивает несколько готовых виджетов, которые могут использовать все преимущества архитектуры модели/представления, не заставляя вас понимать ее.