QAxBindable 类

QAxBindable 类提供了一种在 QWidget 和 ActiveX 客户端之间的接口。 更多信息...

头文件 #include <QAxBindable>
CMakefind_package(Qt6 REQUIRED COMPONENTS AxServer)
target_link_libraries(mytarget PRIVATE Qt6::AxServer)
qmakeQT += axserver

公共函数

QAxBindable()
virtual~QAxBindable()
virtual QAxAggregated *createAggregate()
virtual boolreadData(QIODevice *source, const QString &format)
voidreportError(int code, const QString &src, const QString &desc, const QString &context = QString())
virtual boolwriteData(QIODevice *sink)

保护函数

IUnknown *clientSite() const
voidpropertyChanged(const char *property)
boolrequestPropertyChange(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 客户端。要在您的 ActiveX 控件中实现额外的 COM 接口,重新实现 createAggregate() 返回一个新的 QAxAggregated 子类对象。

另请参阅QAxAggregatedQAxFactoryActiveQt 框架

成员函数文档

QAxBindable::QAxBindable()

构造一个空的 QAxBindable 对象。

[虚拟 noexcept] QAxBindable::~QAxBindable()

销毁 QAxBindable 对象。

[受保护] IUnknown *QAxBindable::clientSite() const

返回指向此 ActiveX 对象客户端站点接口的指针,如果尚未设置客户端站点,则返回 null。

在返回的接口上调用 QueryInterface() 以获取要调用的接口。

[虚拟] QAxAggregated *QAxBindable::createAggregate()

当您想在 ActiveX 控件中实现额外的 COM 接口,或者您想提供 COM 接口的替代实现时,重新实现此函数。返回 QAxAggregated 子类的 new 对象。

默认实现返回 null 指针。

[受保护] void QAxBindable::propertyChanged(const char *property)

调用此函数以通知托管此 ActiveX 控件的客户端对象已更改属性 property

此函数通常在属性的写函数结束时调用。

另请参阅 requestPropertyChange()。

[虚拟] bool QAxBindable::readData(QIODevice *source, const QString &format)

如果 COM 对象支持 MIME 类型,则此函数被调用以从数据 source(在 format 格式下)初始化 COM 对象。您必须打开 source 才能从中读取。

返回 true 表示成功。如果函数返回 false,则 ActiveQt 将通过元对象系统设置属性来处理数据。

如果您重新实现此函数,您还必须实现 writeData()。默认实现不执行任何操作并返回 false。

警告: 嵌入 HTML 中的 ActiveX 控件可以使用 object 标记的 typedata 属性来读取数据,或者使用 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]),则此数字将被解释为帮助文件中的上下文 ID。

[受保护] bool QAxBindable::requestPropertyChange(const char *property)

调用此函数以请求从托管此ActiveX控件的客户端更改属性 property 的权限。如果客户端允许更改,则返回true;否则返回false。

此函数通常在 property 的写函数中首先调用,如果函数返回false,则放弃写入。

void MyActiveQt::setText(const QString &text)
{
    if (!requestPropertyChange("text"))
        return;

    // update property

    propertyChanged("text");
}

另请参阅propertyChanged

[虚拟] bool QAxBindable::writeData(QIODevice *sink)

如果COM对象支持MIME类型,则调用此函数将COM对象存储到 sink 中。您必须在可写之前打开 sink

返回true表示成功。如果函数返回false,则ActiveQt将通过存储属性值来序列化对象。

如果您重新实现了此函数,也必须实现 readData 。默认实现不执行任何操作并返回false。

另请参阅readData

© 2024 The Qt Company Ltd. 本文档中的贡献包含各自的著作权。所提供的文档受 GNU自由文档许可证版本1.3 的条款约束,该许可证由自由软件基金会发布。Qt和相关的标志是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均为各自所有者的财产。