Spec-Zone.ru › Qt 5.14

Класс QAxWidget

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

Заголовок: #include <QAxWidget>
qmake: QT += axcontainer
Наследуется от: QWidget и 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
virtual QAxAggregated * createAggregate()
bool doVerb(const QString &verb)

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

virtual void clear() override
virtual QSize minimumSizeHint() const 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).

[override virtual] void QAxWidget::clear()

Переопределяет: QAxBase::clear().

Завершает работу ActiveX-компонента.

[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 для настройки фактического создания компонента, вызовите эту функцию в своём переопределении, чтобы компонент был вставлен стандартной клиентской частью. Создаёт клиентскую часть для 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)

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

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

Функция добавлена в Qt 4.1.

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

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

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

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

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

Функция добавлена в Qt 4.2.

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

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

[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-5.14/qaxwidget.html

Spec-Zone.ru

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