Spec-Zone.ru › Qt 5.14

Класс QAxBindable

Класс QAxBindable предоставляет интерфейс между QWidget и клиентом ActiveX. Подробнее...

Заголовок: #include <QAxBindable>
qmake: QT += axserver
  • Список всех членов, включая унаследованные

Открытые функции

QAxBindable()
виртуальный ~QAxBindable()
виртуальный QAxAggregated * createAggregate()
виртуальный bool readData(QIODevice *source, const QString &format)
void reportError(int code, const QString &src, const QString &desc, const QString &context = QString())
виртуальный bool writeData(QIODevice *sink)

Защищенные функции

IUnknown * clientSite() const
void propertyChanged(const char *property)
bool requestPropertyChange(const char *property)

Подробное описание

Функции, предоставляемые этим классом, позволяют элементу ActiveX сообщать о изменениях свойств прикладному клиенту. Наследуйте свой класс компонента от QWidget (прямо или косвенно) и этого класса, чтобы получить доступ к функциям этого класса. Компилятор метаобъектов требует, чтобы вы сначала унаследовали от 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 Framework.

Документация по функциям-членам

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.14/qaxbindable.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API