Класс 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.
Документация по членам-функциям
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 не будет вызван.
См. также 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.1/qaxbindable.html