QT 4: программирование GUI на С++
Шрифт:
Теперь у нас имеются перо и кисти, соответствующим образом установленные для каждого текстового эффекта, а для эффекта «Shadow» нарисована тень. После этого мы готовы воспроизвести текст. Текст центрируется по горизонтали и выводится достаточно далеко от нижнего края пиксельной карты, чтобы оставить достаточно места для размещения нижних выносных элементов.
В конце файла .cpp используем
Файл .pro аналогичен файлу, который мы использовали ранее в данной главе для подключаемого модуля курсоров Windows:
Если данная глава повысила ваш интерес к подключаемым к приложению модулям, вы можете изучить имеющийся в Qt более сложный пример Plug & Paint (подключи и рисуй). Приложение поддерживает три различных интерфейса и включает в себя полезное диалоговое окно Plugin Information (информация о подключаемых модулях), которое содержит списки подключаемых модулей и интерфейсов, доступных в приложении.
Глава 20. Возможности, зависимые от платформы
В данной главе мы рассмотрим некоторые доступные программистам Qt возможности, которые зависят от платформы. Мы начнем с рассмотрения способов доступа к таким «родным» программным интерфейсам, как Win32 API в системе Windows, Carbon в системе Mac OS X и Xlib в системе X11. Затем мы перейдем к изучению расширения ActiveQt, демонстрируя способы применения элементов управления ActiveX в приложениях Qt, работающих в системе Windows, а также способы создания приложений, выполняющих функции серверов ActiveX. В последнем разделе мы рассмотрим способы взаимодействия приложений Qt с менеджером сеансов системы X11.
Кроме представленных здесь возможностей компания «Trolltech» предлагает несколько зависимых от платформы решений в рамках проекта Qt Solutions, в частности миграционные фреймворки Qt/Motif и Qt/MFC, позволяющие упростить перевод в Qt приложений Motif/Xt и MFC. Подобное расширение для приложений Tcl/Tk обеспечивается фирмой «Froglogic», а компанией «Klaralvdalens Datakonsult» разработан конвертор ресурсов Windows компании Microsoft. Дополнительную информацию вы найдете на следующих веб-страницах:
• http://www.trolltech.com/products/solutions/catalog/
• http://www.froglogic.com/tq/
• http://www.kdab.net/knut/
Для встроенных приложений компания «Trolltech» обеспечивает Qtopia — рабочую среду для разработки таких приложений. Она рассматривается в главе 21 .
Применение «родных» программных интерфейсов
Всесторонний программный интерфейс Qt удовлетворяет большинству требований
Для каждой платформы класс QWidget поддерживает функцию winId, которая возвращает идентификатор или описатель окна. QWidget также обеспечивает статическую функцию find, которая возвращает QWidget с идентификатором конкретного окна. Мы можем передавать этот идентификатор функциям «родного» программного интерфейса для достижения эффектов, зависимых от платформы. Например, в следующем программном коде используется функция winId для отображения слева заголовка панели инструментов, используя «родные» функции Mac OS X:
Рис. 20.1. Окно панели инструментов Mac OS X с отображением заголовка сбоку.
Ниже показано, как в системе X11 мы можем модифицировать свойство окна:
Использование директив #ifdef и #endif вокруг зависимого от платформы программного кода гарантирует компиляцию приложения на других платформах.
Приведенный ниже пример показывает, как в приложениях, предназначенных только для Windows, можно использовать вызовы GDI для рисования на виджете Qt: