Вход/Регистрация
QT 4: программирование GUI на С++
вернуться

Саммерфилд Марк

Шрифт:

Мы вызываем функцию 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,

• OLE_COLOR — QColor,

• SAFEARRAY(VARIANT) — QList<QVariant>,

• SAFEARRAY(BSTR) — QStringList,

• SAFEARRAY(BYTE) — QByteArray,

• VARIANT — QVariant,

• IFontDisp * — QFont,

• IPictureDisp * — QPixmap,

• Тип, определяемый пользователем — QRect, QSize, QPoint.

Например, входной параметр типа VARIANT_BOOL становится типом bool, а выходной параметр типа VARIANT_BOOL становится типом bool &. Ecли пoлyчeнный тип являeтcя клaccoм Qt (QString, QDateTime и так далее), входной параметр становится ссылкой с модификатором const (например, const QString &).

Для получения списка всех свойств, сигналов и слотов, доступных в объектах QAxObject или QAxWidget вместе с их типами Qt, сделайте вызов функции QAxBase::generateDocumentation или используйте утилиту командной строки Qt dumpdoc, расположенную в каталоге Qt tools\activeqt\dumpdoc.

Теперь продолжим рассмотрение конструктора PlayerWindow:

05 wmp->setProperty("ShowControls", false);

06 wmp->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

07 connect(wmp, SIGNAL(PlayStateChange(int, int)),

08 this, SLOT(onPlayStateChange(int, int)));

09 connect(wmp, SIGNAL(ReadyStateChange(ReadyStateConstants)),

10 this, SLOT(onReadyStateChange(ReadyStateConstants)));

11 connect(wmp, SIGNAL(PositionChange(double, double)),

12 this, SLOT(onPositionChange(double, double)));

После вызова QAxWidget::setControl мы вызываем функцию QObject::setProperty для установки свойства ShowControls (отображать элементы управления) элемента управления Media Player системы Windows на значение false, поскольку мы предоставляем свои собственные кнопки для работы с компонентом. Функция QObject::setProperty может использоваться как для свойств СОМ, так и для обычных свойств Qt. Ее второй параметр имеет тип QVariant.

Затем мы вызываем функцию setSizePolicy, чтобы элемент управления ActiveX мог занять все имеющееся в менеджере компоновки пространство, и мы подсоединяем три события ActiveX компонента СОМ к трем слотам.

13 stopButton = new QToolButton;

14 stopButton->setText(tr("&Stop"));

15 stopButton->setEnabled(false);

16 connect(stopButton, SIGNAL(clicked), wmp, SLOT(Stop));

17 …

18 }

Остальная часть конструктора PlayerWindow следует обычному образцу, за исключением того, что мы подсоединяем некоторые сигналы Qt к слотам объекта COM (Play, Pause и Stop). Мы показали здесь реализацию только кнопки Stop, поскольку другие кнопки реализуются аналогично.

01 void PlayerWindow::timerEvent(QTimerEvent *event)

02 {

03 if (event->timerId == updateTimer) {

  • Читать дальше
  • 1
  • ...
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: