Spec-Zone.ru › Qt 6.1

Класс QAxWidget

Класс QAxWidget — это QWidget, который оборачивает ActiveX-контроль. Подробнее...

Заголовок: #include <QAxWidget>
CMake: find_package(Qt6 COMPONENTS AxContainer REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake: QT += axcontainer
Наследуется от: QAxBaseWidget и QAxBase
  • Список всех членов, включая унаследованные

Открытые функции

QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
QAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
virtual ~QAxWidget() override
void clear()
virtual QAxAggregated * createAggregate()
bool doVerb(const QString &verb)

Переопределённые открытые функции

virtual QSize minimumSizeHint() const override
virtual void resetControl() override
virtual QSize sizeHint() const override

Защищённые функции

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) override
virtual void connectNotify(const QMetaMethod &signal) override
virtual bool initialize(IUnknown **ptr) override
virtual void resizeEvent(QResizeEvent *) override

Подробное описание

Объект 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(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Создаёт QAxWidget, который оборачивает COM-объект, на который ссылается iface. parent и f передаются в конструктор QWidget.

QAxWidget::QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Создаёт виджет QAxWidget и инициализирует ActiveX-контроль c. parent и f передаются в конструктор QWidget.

См. также setControl().

QAxWidget::QAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Создаёт пустой виджет QAxWidget и передаёт parent и f в конструктор QWidget. Для инициализации контроля вызовите setControl().

[override virtual] QAxWidget::~QAxWidget()

Закрывает ActiveX-контроль и уничтожает виджет QAxWidget, освобождая все выделенные ресурсы.

См. также clear().

[override virtual protected] void QAxWidget::changeEvent(QEvent *e)

Переопределяет: QWidget::changeEvent(QEvent *event).

void QAxWidget::clear()

Закрывает ActiveX-контроль.

См. также resetControl().

[override virtual protected] void QAxWidget::connectNotify(const QMetaMethod &signal)

Переопределяет: QObject::connectNotify(const QMetaMethod &signal).

[virtual] QAxAggregated *QAxWidget::createAggregate()

Переопределите эту функцию, если хотите реализовать дополнительные COM-интерфейсы для стороны клиента ActiveX-контроля или если хотите предоставить альтернативные реализации COM-интерфейсов. Возвращает новый объект подкласса QAxAggregated.

По умолчанию возвращается нулевой указатель.

[virtual protected] bool QAxWidget::createHostWindow(bool initialized)

Создаёт клиентскую область для ActiveX-контроля и возвращает true, если контроль был успешно встроен, в противном случае возвращает false. Если initialized равно true, контроль уже был инициализирован.

Эта функция вызывается initialize(). Если вы переопределяете initialize для настройки фактической инициализации контроля, вызовите эту функцию в своём переопределении, чтобы контроль был встроен по умолчанию с помощью клиентской стороны.

[protected] bool QAxWidget::createHostWindow(bool initialized, const QByteArray &data)

Создаёт клиентскую область для ActiveX-контроля и возвращает true, если контроль был успешно встроен, в противном случае возвращает false. Если initialized равно false, контроль будет инициализирован с помощью data. Контроль будет инициализирован с помощью интерфейса IPersistStreamInit или IPersistStorage.

Если необходимо инициализировать элемент управления с помощью пользовательских данных, вызовите эту функцию в своём переопределении initialize(). Эта функция не вызывается в стандартной реализации initialize().

bool QAxWidget::doVerb(const QString &verb)

Запрашивает элемент управления ActiveX выполнить действие verb. Возможные значения verb возвращаются функцией verbs().

Функция возвращает true, если действие можно выполнить, иначе — false.

[override virtual protected] bool QAxWidget::initialize(IUnknown **ptr)

Переопределяет: QAxBase::initialize(IUnknown **ptr).

Вызывает QAxBase::initialize(ptr) и встраивает элемент управления в этот виджет, вызывая createHostWindow(false), если это удалось.

Чтобы инициализировать элемент управления до его активации, переопределите эту функцию и добавьте свой код инициализации перед вызовом createHostWindow(true).

Возвращает true при успехе, false в противном случае.

[override virtual] QSize QAxWidget::minimumSizeHint() const

Переопределяет функцию доступа к свойству: QWidget::minimumSizeHint.

[override virtual] void QAxWidget::resetControl()

Переопределяет: QAxObjectInterface::resetControl().

Выключает элемент управления ActiveX.

[override virtual protected] void QAxWidget::resizeEvent(QResizeEvent *)

Переопределяет: QWidget::resizeEvent(QResizeEvent *event).

[override 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/qt-6.1/qaxwidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API