Класс QAxBindable
Класс QAxBindable предоставляет интерфейс между QWidget и клиентом ActiveX. Подробнее...
| Заголовок: | #include <QAxBindable> |
| CMake: | find_package(Qt6 COMPONENTS AxServer REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::AxServer) |
| qmake: | QT += axserver |
Открытые функции
| QAxBindable() | |
| virtual | ~QAxBindable() |
| virtual QAxAggregated * | createAggregate() |
| virtual bool | readData(QIODevice *source, const QString &format) |
| void | reportError(int code, const QString &src, const QString &desc, const QString &context = QString()) |
| virtual bool | writeData(QIODevice *sink) |
Защищенные функции
| IUnknown * | clientSite() const |
| void | propertyChanged(const char *property) |
| bool | requestPropertyChange(const char *property) |
Подробное описание
Функции, предоставляемые этим классом, позволяют ActiveX-контролю сообщать о изменениях свойств прикладному клиенту. Наследуйте свой класс-контроль как от QWidget (прямо или косвенно), так и от этого класса, чтобы получить доступ к функциям этого класса. Компилятор метаобъектов (moc) требует, чтобы вы сначала унаследовали от QWidget.
class MyActiveX : public QWidget, public QAxBindable
{
Q_OBJECT
Q_PROPERTY(int value READ value WRITE setValue)
public:
MyActiveX(QWidget *parent = 0);
...
int value() const;
void setValue(int);
}; При реализации функции записи свойств используйте requestPropertyChange(), чтобы получить разрешение от приложения-клиента ActiveX на изменение этого свойства. При изменении свойства вызовите propertyChanged(), чтобы уведомить приложение-клиент ActiveX об изменении. При возникновении критической ошибки в контроле используйте статическую функцию reportError(), чтобы уведомить клиента.
Используйте интерфейс, возвращаемый функцией clientSite(), для вызова приложения-клиента ActiveX. Для реализации дополнительных COM-интерфейсов в своем ActiveX-контроле переопределите createAggregate(), чтобы вернуть новый объект подкласса QAxAggregated.
Пример ActiveQt OpenGL показывает, как использовать QAxBindable для реализации дополнительных COM-интерфейсов.
См. также QAxAggregated, QAxFactory и ActiveQt Framework.
Документация функций-членов
QAxBindable::QAxBindable()
Конструирует пустой объект QAxBindable.
[virtual] QAxBindable::~QAxBindable()
Удаляет объект QAxBindable.
[protected] IUnknown *QAxBindable::clientSite() const
Возвращает указатель на интерфейс клиентской области для этого объекта ActiveX или null, если сайт клиента не был установлен.
Вызовите QueryInterface() на возвращённом интерфейсе, чтобы получить нужный интерфейс для вызова.
[virtual] QAxAggregated *QAxBindable::createAggregate()
Переопределите эту функцию, когда необходимо реализовать дополнительные COM-интерфейсы в ActiveX-контроле или предоставить альтернативные реализации COM-интерфейсов. Верните новый объект подкласса QAxAggregated.
По умолчанию реализация возвращает указатель null.
[protected] void QAxBindable::propertyChanged(const char *property)
Вызовите эту функцию, чтобы уведомить клиента, размещающего этот ActiveX-контроль, о том, что свойство property было изменено.
Эта функция обычно вызывается в конце функции записи свойства.
См. также requestPropertyChange().
[virtual] bool QAxBindable::readData(QIODevice *source, const QString &format)
Если COM-объект поддерживает MIME-тип, то эта функция вызывается для инициализации COM-объекта данными из source в формате format. Вам необходимо открыть source для чтения перед чтением из него.
Возвращает true для указания успеха. Если функция возвращает false, то ActiveQt обработает данные, установив свойства через систему метаобъектов.
Если вы переопределяете эту функцию, то вы также должны переопределить writeData(). По умолчанию реализация ничего не делает и возвращает false.
Предупреждение: ActiveX-контроли, встроенные в HTML, могут использовать атрибут type и data тега object, чтобы прочитать данные, или использовать список тегов param для инициализации свойств. Если используются теги param, то Internet Explorer проигнорирует атрибут data, и readData не будет вызван.
См. также writeData().
void QAxBindable::reportError(int code, const QString &src, const QString &desc, const QString &context = QString())
Сообщает об ошибке прикладному применению. code — это определяемый контролем код ошибки. desc — это удобочитаемое описание ошибки, предназначенное для пользователя приложения. src — имя источника ошибки, обычно имя сервера ActiveX. context может быть местоположением файла справки с дополнительной информацией об ошибке. Если context заканчивается числом в скобках, например [12], это число будет интерпретировано как идентификатор контекста в файле справки.
[protected] bool QAxBindable::requestPropertyChange(const char *property)
Вызовите эту функцию, чтобы запросить разрешение на изменение свойства property от клиента, размещающего этот ActiveX-контроль. Возвращает true, если клиент разрешает изменение; в противном случае возвращает false.
Эта функция обычно вызывается в первую очередь в функции записи для property, и запись прерывается, если функция возвращает false.
void MyActiveQt::setText(const QString &text)
{
if (!requestPropertyChange("text"))
return;
// update property
propertyChanged("text");
} См. также propertyChanged().
[virtual] bool QAxBindable::writeData(QIODevice *sink)
Если COM-объект поддерживает MIME-тип, то эта функция вызывается для сохранения COM-объекта в sink. Вам необходимо открыть sink для записи перед записью в него.
Возвращает true для указания успеха. Если функция возвращает false, то ActiveQt сериализует объект, сохранив значения свойств.
Если вы переопределяете эту функцию, то вы также должны переопределить readData(). По умолчанию реализация ничего не делает и возвращает false.
См. также readData().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qaxbindable.html