Класс 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/archives/qt-5.11/qaxbindable.html