• GWorldPtr QPixmap::macQDHandle;
• RgnHandle QRegion::handle;
• HIViewRef QWidget::winId;
Windows:
• HCURSOR QCursor::handle;
• HDC QPaintEngine::getDC;
• HDC QPrintEngine::getPrinterDC;
• HFONT QFont::handle;
• HPALETTE QColormap::hPal;
• HRGN QRegion::handle;
• HWND QWidget::winId;
X11:
• Cursor QCursor::handle;
• Font QFont::handle;
• Picture QPixmap::x11PictureHandle;
• Picture QWidget::x11PictureHandle;
• Pixmap QPixmap::handle;
• QX11Info QPixmap::x11Info;
• QX11Info QWidget::x11Info;
• Region QRegion::handle;
• Screen QCursor::x11Screen;
• SmcConn QSessionManager::handle;
• Window QWidget::handle;
• Window QWidget::winId;
В системе X11 функции QPixmap::x11Info и QWidget::x11Info возвращают объект QX11Info, который обеспечивает различные указатели и описатели с помощью ряда функций, включая display, screen, colormap и visual. Мы можем использовать их для настройки графического контекста, например QWidget или QPixmap.
Приложениям Qt, которым необходимо взаимодействовать с другими инструментальными средствами и библиотеками, часто приходится осуществлять доступ к низкоуровневым событиям (XEvent в системе X11, MSG в системе Windows, Eventref в системе Mac OS X, QWSEvent для Qtopia), прежде чем они будут преобразованы в события QEvent. Мы можем делать это путем создания подкласса QApplication и переопределения соответствующего зависимого от платформы фильтра событий — одну из следующих функций: x11EventFilter, winEventFilter, macEventFilter и qwsEventFilter. Мы можем поступать по-другому и осуществлять доступ к зависимым от платформы событиям, которые передаются заданному QWidget путем переопределения какой-то одной из функций winEvent, x11Event, macEvent и qwsEvent. Это может пригодиться для обработки событий определенного типа, которые Qt обычно игнорирует, например события джойстика.
Более подробную информацию относительно применения зависимых от платформы средств, в том числе как развертывать приложения 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:
01 class PlayerWindow : public QWidget
02 {
03 Q_OBJECT
04 Q_ENUMS(ReadyStateConstants)
05 public:
06 enum PlayStateConstants {
07 Stopped = 0, Paused = 1, Playing = 2 };
08 enum ReadyStateConstants {
09 Uninitialized = 0, Loading = 1, Interactive = 3, Complete = 4 };
10 PlayerWindow;
11 protected:
12 void timerEvent(QTimerEvent *event);
13 private slots: