Класс 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) |
Подробное описание
Функции, предоставляемые этим классом, позволяют элементу управления 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], это число будет интерпретироваться как ID контекста в файле справки.
[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.13/qaxbindable.html