Класс 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.
По умолчанию возвращается нулевой указатель.
[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.12/qaxbindable.html