QAxBindable 类
QAxBindable 类提供了一种在 QWidget 和 ActiveX 客户端之间的接口。 更多信息...
头文件 | #include <QAxBindable> |
CMake | find_package(Qt6 REQUIRED COMPONENTS AxServer) 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 (直接或间接) 和此类继承您的控件类以访问这些类函数。元对象编译器要求您首先从 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 子类对象。
另请参阅QAxAggregated、QAxFactory 和 ActiveQt 框架。
成员函数文档
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
标记的 type
和 data
属性来读取数据,或者使用 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.在芬兰和/或其他国家的商标。所有其他商标均为各自所有者的财产。