Класс QAxWidget
Класс QAxWidget — это класс QWidget, который оборачивает ActiveX-контроль. Подробнее...
| Заголовок: | #include <QAxWidget> |
| qmake: | QT += axcontainer |
| Наследуется от: | QWidget и QAxBase |
Открытые функции
| QAxWidget(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) | |
| QAxWidget(const QString &c, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) | |
| QAxWidget(IUnknown *iface, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) | |
| ~QAxWidget() | |
| virtual QAxAggregated * | createAggregate() |
| bool | doVerb(const QString &verb) |
Переопределенные открытые функции
| virtual void | clear() |
| virtual QSize | minimumSizeHint() const |
| virtual QSize | sizeHint() const |
- 211 открытых функций, унаследованных от QWidget
- 19 открытых функций, унаследованных от QAxBase
- 31 открытых функций, унаследованных от QObject
- 14 открытых функций, унаследованных от QPaintDevice
Защищенные функции
| virtual bool | createHostWindow(bool initialized) |
| bool | createHostWindow(bool initialized, const QByteArray &data) |
| virtual bool | translateKeyEvent(int message, int keycode) const |
Переопределенные защищенные функции
| virtual void | changeEvent(QEvent *e) |
| virtual void | connectNotify(const QMetaMethod &signal) |
| virtual bool | initialize(IUnknown **ptr) |
| virtual void | resizeEvent(QResizeEvent *) |
- 35 защищенных функций, унаследованных от QWidget
- 5 защищенных функций, унаследованных от QAxBase
- 9 защищенных функций, унаследованных от QObject
- 1 защищенная функция, унаследованная от QPaintDevice
Дополнительные унаследованные члены
- 58 свойств, унаследованных от QWidget
- 1 свойство, унаследованное от QAxBase
- 1 свойство, унаследованное от QObject
- 19 открытых слотов, унаследованных от QWidget
- 1 открытый слот, унаследованный от QObject
- 3 сигналов, унаследованных от QWidget
- 3 сигналов, унаследованных от QAxBase
- 2 сигналов, унаследованных от QObject
- 5 статических открытых членов, унаследованных от QWidget
- 11 статических открытых членов, унаследованных от QObject
- 1 защищенный слот, унаследованный от QWidget
Подробное описание
Класс QAxWidget — это класс QWidget, который оборачивает ActiveX-контроль.
Объект QAxWidget можно создать как пустой объект, с именем ActiveX-контроля, который он должен оборачивать, или с указателем на существующий интерфейс ActiveX-контроля. Свойства, методы и события ActiveX-контроля, которые используют только поддерживаемые типы данных QAxBase, становятся доступны в виде свойств, слотов и сигналов Qt. Базовый класс QAxBase предоставляет API для прямого доступа к ActiveX через указатель IUnknown.
QAxWidget является QWidget и в основном используется как таковой, например, может быть организован в иерархии виджетов и макетах или использоваться в качестве фильтра событий. Стандартные свойства виджета, например, enabled, поддерживаются, но зависит от ActiveX-контроля, чтобы реализовать поддержку таких свойств, как палитра или шрифт. QAxWidget пытается предоставить необходимые подсказки.
Однако вы не можете переопределить обработчики событий Qt, такие как mousePressEvent или keyPressEvent, и ожидать их надежной вызова. Встроенный контроль полностью покрывает QAxWidget и обычно обрабатывает сам пользовательский интерфейс. Используйте API-интерфейсы, специфичные для контроля (например, подписывайтесь на сигналы контроля) или используйте стандартные методы COM, например, подмену процедуры окна.
QAxWidget также наследует большую часть своей функциональности, связанной с ActiveX, от QAxBase, в частности, dynamicCall() и querySubObject().
Предупреждение: Вы можете унаследовать от QAxWidget, но не можете использовать макрос Q_OBJECT в подклассе (сгенерированный файл moc не будет компилироваться), поэтому вы не можете добавлять дополнительные сигналы, слоты или свойства. Это ограничение связано с метаобъектной информацией, генерируемой во время выполнения. Чтобы обойти эту проблему, агрегируйте QAxWidget в качестве члена подкласса QObject.
См. также QAxBase, QAxObject, QAxScript и Фреймворк ActiveQt.
Документация по функциям-членам
QAxWidget::QAxWidget(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
Создает пустой виджет QAxWidget и передает parent и f конструктору QWidget. Чтобы инициализировать контроль, вызовите setControl().
QAxWidget::QAxWidget(const QString &c, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
Создаёт виджет QAxWidget и инициализирует ActiveX-контроль c. parent и f передаются конструктору QWidget.
См. также setControl().
QAxWidget::QAxWidget(IUnknown *iface, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
Создаёт QAxWidget, который оборачивает COM-объект, на который ссылается iface. parent и f передаются конструктору QWidget.
QAxWidget::~QAxWidget()
Закрывает ActiveX-контроль и уничтожает виджет QAxWidget, освобождая все выделенные ресурсы.
См. также clear().
[virtual protected] void QAxWidget::changeEvent(QEvent *e)
Переопределено из QWidget::changeEvent().
[virtual] void QAxWidget::clear()
Переопределено из QAxBase::clear().
Закрывает ActiveX-контроль.
[virtual protected] void QAxWidget::connectNotify(const QMetaMethod &signal)
Переопределено из QObject::connectNotify().
[virtual] QAxAggregated *QAxWidget::createAggregate()
Переопределите эту функцию, если хотите реализовать дополнительные интерфейсы COM для клиентской части ActiveX-контроля или предоставить альтернативные реализации интерфейсов COM. Возвращает новый объект подкласса QAxAggregated.
По умолчанию функция возвращает нулевой указатель.
[virtual protected] bool QAxWidget::createHostWindow(bool initialized)
Создаёт клиентскую область для ActiveX-контроля и возвращает true, если контроль был успешно вставлен, иначе — false. Если initialized равно true, контроль уже был инициализирован.
Эта функция вызывается функцией initialize(). Если вы переопределите initialize для настройки фактической инициализации контроля, вызовите эту функцию в своём переопределении, чтобы контроль был вставлен с помощью стандартной клиентской стороны. Создаёт клиентскую область для ActiveX-контроля и возвращает true, если контроль был успешно вставлен, иначе — false.
[protected] bool QAxWidget::createHostWindow(bool initialized, const QByteArray &data)
Создаёт клиентскую область для ActiveX-контроля и возвращает true, если контроль был успешно вставлен, иначе — false. Если initialized равно false, контроль будет инициализирован с помощью data. Инициализация контроля будет выполнена с помощью интерфейсов IPersistStreamInit или IPersistStorage.
Если для инициализации контроля необходимо использовать пользовательские данные, вызовите эту функцию в своём переопределении initialize(). Эта функция не вызывается стандартной реализацией initialize().
Функция была добавлена в Qt 4.4.
bool QAxWidget::doVerb(const QString &verb)
Запрашивает ActiveX-контроль выполнить действие verb. Возможные действия возвращаются функцией verbs().
Функция возвращает true, если объект может выполнить действие, иначе — false.
Функция была добавлена в Qt 4.1.
[virtual protected] bool QAxWidget::initialize(IUnknown **ptr)
Переопределено из QAxBase::initialize().
Вызывает QAxBase::initialize(ptr) и встраивает контроль в этот виджет, вызывая createHostWindow(false), если это удалось.
Чтобы инициализировать контроль до его активации, переопределите эту функцию и добавьте код инициализации перед вызовом createHostWindow(true).
Функция была добавлена в Qt 4.2.
[virtual] QSize QAxWidget::minimumSizeHint() const
Переопределено из QWidget::minimumSizeHint().
[virtual protected] void QAxWidget::resizeEvent(QResizeEvent *)
Переопределено из QWidget::resizeEvent().
[virtual] QSize QAxWidget::sizeHint() const
Переопределено из QWidget::sizeHint().
[virtual protected] bool QAxWidget::translateKeyEvent(int message, int keycode) const
Переопределите эту функцию, чтобы передавать определённые события нажатия клавиш ActiveX-контролю. message — идентификатор сообщения Windows, указывающий тип сообщения (например, WM_KEYDOWN), а keycode — виртуальный код клавиши (например, VK_TAB).
Если функция возвращает true, событие нажатия клавиши передаётся ActiveX-контролю, который затем обрабатывает или передаёт событие Qt.
Если функция возвращает false, обработка события нажатия клавиши игнорируется ActiveQt, т. е. ActiveX-контроль может его обработать или нет.
Стандартная реализация возвращает true в следующих случаях:
| WM_SYSKEYDOWN | WM_SYSKEYUP | WM_KEYDOWN |
|---|---|---|
| Все коды клавиш | VK_MENU | VK_TAB, VK_DELETE и все клавиши, кроме стрелок, в сочетании с VK_SHIFT, VK_CONTROL или VK_MENU |
Эта таблица является результатом экспериментов с популярными ActiveX-контролями, такими как Internet Explorer и приложения Microsoft Office, но для некоторых контролей может потребоваться модификация.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qaxwidget.html