Spec-Zone.ru › Qt 5.15

Класс 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.15/qaxwidget.html

Spec-Zone.ru

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