QT 4: программирование GUI на С++
Шрифт:
Чтобы это сработало, мы должны также переопределить функцию QPaintDevice::paintEngine для возврата нулевого указателя и установить атрибут Qt::WA_PaintOnScreen в конструкторе виджета.
Следующий пример показывает, как можно сочетать QPainter и GDI в обработчике события рисования, используя функции getDC и releaseDC класса QPaintEngine:
Подобное
Qt определяет один из следующих четырех символов оконной системы: Q_WS_WIN, Q_WS_X11, Q_WS_MAC и Q_WS_QWS (Qtopia). Мы должны обеспечить включение хотя бы одного заголовка Qt перед их использованием в приложениях. Qt также обеспечивает препроцессорные символы для идентификации операционной системы:
• Q_OS_AIX
• Q_OS_BSD4
• Q_OS_BSDI
• Q_OS_CYGWIN
• Q_OS_DGUX
• Q_OS_DYNIX
• Q_OS_FREEBSD
• Q_OS_HPUX
• Q_OS_HURD
• Q_OS_IRIX
• Q_OS_LINUX
• Q_OS_LYNX
• Q_OS_MAC
• Q_OS_NETBSD
• Q_OS_OPENBSD
• Q_OS_OS2EMX
• Q_OS_OSF
• Q_OS_QNX6
• Q_OS_QNX
• Q_OS_RELIANT
• Q_OS_SCO
• Q_OS_SOLARIS
• Q_OS_ULTRIX
• Q_OS_UNIXWARE
• Q_OS_WIN32
• Q_OS_WIN64
Мы
Кроме макросов операционной и оконной систем существует также ряд макросов компилятора. Например, Q_CC_MSVC определяется в том случае, если компилятором является Visual С++ компании Microsoft. Такие макросы полезны, когда приходится обходить ошибки компилятора.
Несколько классов графического пользовательского интерфейса Qt обеспечивают зависимые от платформы функции, которые возвращают описатели (handle) базового объекта для низкоуровневой обработки. Они перечислены на рис. 20.2:
Mас OS X:
• ATSFontFormatRef QFont::handle;
• CGImageRef QPixmap::macCGHandle;
• GWorldPtr QPixmap::macQDAlphaHandle;
• 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;