Класс QAxBindable
Класс QAxBindable предоставляет интерфейс между QWidget и клиентом ActiveX. Подробнее...
| Заголовок: | #include <QAxBindable> |
| 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) |
Подробное описание
Класс QAxBindable предоставляет интерфейс между QWidget и клиентом ActiveX.
Функции, предоставляемые этим классом, позволяют элементу управления 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.
Документация по функциям-членам
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 не будет вызываться.
Эта функция была добавлена в Qt 4.1.
См. также 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.
Эта функция была добавлена в Qt 4.1.
См. также readData().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qaxbindable.html