Spec-Zone.ru › Qt 5.15

Класс 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 (прямо или косвенно) и этого класса, чтобы получить доступ к функциям этого класса. Сначала необходимо унаследовать от 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/qt-5.15/qaxbindable.html

Spec-Zone.ru

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