QT 4: программирование GUI на С++
Шрифт:
В системе X11 функции QPixmap::x11Info и QWidget::x11Info возвращают объект QX11Info, который обеспечивает различные указатели и описатели с помощью ряда функций, включая display, screen, colormap и visual. Мы можем использовать их для настройки графического контекста, например QWidget или QPixmap.
Приложениям Qt, которым необходимо взаимодействовать с другими инструментальными средствами и библиотеками, часто приходится осуществлять доступ к низкоуровневым событиям (XEvent
Более подробную информацию относительно применения зависимых от платформы средств, в том числе как развертывать приложения Qt на различных платформах, можно найти в сети Интернет по адресу http://doc.trolltech.com/4.1/win-system.html.
Применение ActiveX в системе Windows
Технология ActiveX компании Microsoft позволяет приложениям включать в себя компоненты интерфейса пользователя других приложений или библиотек. Она построена на применении технологии СОМ компании Microsoft и определяет один набор интерфейсов приложений, использующих компоненты, и другой набор интерфейсов приложений и библиотек, предоставляющих компоненты.
Версия Qt/Windows для настольных компьютеров (Desktop Edition) обеспечивает рабочую среду ActiveQt для «бесшовного соединения» ActiveX и Qt. ActiveQt состоит из двух модулей:
• Модуль QAxContainer позволяет нам использовать объекты СОМ и встраивать элементы управления ActiveX в приложения Qt.
• Модуль QAxServer позволяет нам экспортировать пользовательские объекты СОМ и элементы управления ActiveX, написанные с помощью средств разработки Qt.
Наш первый пример встраивает Media Player (медиаплеер) системы Windows вприложение Qt при помощи модуля QAxContainer. Приложение Qt добавляет кнопку Open, кнопку Play/Pause, кнопку Stop и ползунок в элемент управления ActiveX Media Player системы Windows.
Рис. 20.3. Приложение Media Player.
Главное окно приложения имеет тип PlayerWindow:
Класс PlayerWindow наследует QWidget. Макрос Q_ENUMS, расположенный
Конструктор начинается с создания объекта QAxWidget для инкапсулирования элемента управления ActiveX Media Player системы Windows. Модуль QAxContainer состоит из трех классов: QAxObject инкапсулирует объект COM, QAxWidget инкапсулирует элемент управления ActiveX и QAxBase реализует основную функциональность СОМ для QAxObject и QAxWidget.
Мы вызываем функцию setControl для объекта QAxWidget с идентификатором класса элемента управления Media Player 6.4 системы Windows. Это создает экземпляр требуемого компонента. С этого момента все свойства, события и методы элемента управления ActiveX доступны как свойства, сигналы и методы Qt объекта QAxWidget.
Рис. 20.4. Дерево наследования для модуля QAxContainer.
Типы данных СОМ автоматически преобразуются в соответствующие типы объектов, как показано на рис. 20.5:
• VARIANT_BOOL — bool,
• char, short, int, long — int,
• unsigned char, unsigned short, unsigned int, unsigned long — uint,
• float, double — double,
• CY — qlonglong, qulonglong,
• BSTR — QString,
• DATE — QDateTime, QDate, QTime,