Spec-Zone.ru › Qt 5.6

Класс 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.

По умолчанию возвращается нулевой указатель.

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

Spec-Zone.ru

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