前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >QT应用编程: Qt数据类型和(ActiveX)COM接口数据类型对应关系

QT应用编程: Qt数据类型和(ActiveX)COM接口数据类型对应关系

作者头像
DS小龙哥
发布于 2022-01-07 06:29:17
发布于 2022-01-07 06:29:17
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

QT调用COM组件方式示例: https://blog.csdn.net/xiaolong1126626497/article/details/113127300?spm=1001.2014.3001.5501

VS2017+QT创建COM组件示例: https://blog.csdn.net/xiaolong1126626497/article/details/112556866

QT创建的COM组件里,类里提供的公共槽函数可以直接被其他语言调用,提供信号可以被其他语言绑定为事件,数据通信非常方便。

比如: QT如果调用已经注册的COM组件,可以绑定COM组件提供的信号到自己的指定的槽函数。

C#如果调用已经注册的COM组件,可以绑定COM组件提供的信号(事件) (QT生成的COM组件,信号传递出来的参数,在C#里接收回调函数里,从事件e结构里.号可以直接取出数据)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class ComPluginTest : public QWidget, public QAxBindable
{
    Q_OBJECT

public:
    ComPluginTest(QWidget *parent = Q_NULLPTR);
public slots: //槽函数声明标志
	void pushButton_int_clicked(); //声明槽函数
	void pushButton_double_clicked(); //声明槽函数
	void pushButton_string_clicked();

	void pushButton_string1_clicked();
	void pushButton_string2_clicked();
	void pushButton_string3_clicked();
	QString VersionNumber();
signals:
	void signal_value_str1(const QString& str); //信号声明
	void signal_value_str2(QString str); //信号声明
	void signal_value_str3(QString str); //信号声明
	void signal_value_string(QString &str); //信号声明
	void signal_value_int(int); //信号声明
	void signal_value_double(double); //信号声明
private:
    Ui::ComPluginTestClass ui;
};

ActiveQt框架将属性和公共插槽公开为ActiveX属性和方法,将信号公开为ActiveX事件,并在Qt数据类型和等效的COM数据类型之间进行转换。

Qt支持作为COM组件信号和槽函数参数的数据类型如下:

Qt data type

COM property

bool

VARIANT_BOOL

QString

BSTR

int

int

uint

unsigned int

double

double

qlonglong

CY

qulonglong

CY

QColor

OLE_COLOR

QDate

DATE

QDateTime

DATE

QTime

DATE

QFont

IFontDisp*

QPixmap

IPictureDisp*

QVariant

VARIANT

QVariantList (same as QList<QVariant>)

SAFEARRAY(VARIANT)

QStringList

SAFEARRAY(BSTR)

QByteArray

SAFEARRAY(BYTE)

QRect

User defined type

QSize

User defined type

QPoint

User defined type

The Qt data types that are supported for parameters in signals and slots are:

Qt data type

COM parameter

bool

[in] VARIANT_BOOL

bool&

[in, out] VARIANT_BOOL*

QString, const QString&

[in] BSTR

QString&

[in, out] BSTR*

QString&

[in, out] BSTR*

int

[in] int

int&

[in,out] int

uint

[in] unsigned int

uint&

[in, out] unsigned int*

double

[in] double

double&

[in, out] double*

QColor, const QColor&

[in] OLE_COLOR

QColor&

[in, out] OLE_COLOR*

QDate, const QDate&

[in] DATE

QDate&

[in, out] DATE*

QDateTime, const QDateTime&

[in] DATE

QDateTime&

[in, out] DATE*

QFont, const QFont&

[in] IFontDisp*

QFont&

[in, out] IFontDisp**

QPixmap, const QPixmap&

[in] IPictureDisp*

QPixmap&

[in, out] IPictureDisp**

QList<QVariant>, const QList<QVariant>&

[in] SAFEARRAY(VARIANT)

QList<QVariant>&

[in, out] SAFEARRAY(VARIANT)*

QStringList, const QStringList&

[in] SAFEARRAY(BSTR)

QStringList&

[in, out] SAFEARRAY(BSTR)*

QByteArray, const QByteArray&

[in] SAFEARRAY(BYTE)

QByteArray&

[in, out] SAFEARRAY(BYTE)*

QObject*

[in] IDispatch*

QRect&

[in, out] struct QRect (user defined)

QSize&

[in, out] struct QSize (user defined)

QPoint&

[in, out] struct QPoint (user defined)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档