加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 将QPair转换为QVariant

发布时间:2020-12-16 04:54:50 所属栏目:百科 来源:网络整理
导读:我有以下问题:我想通过TCP传输数据,并为此编写了一个函数.为了最大可重用性,函数模板是f(QPair QString,QVariant数据).第一个值(也称为QString)由接收器用作目标地址,第二个值包含数据.现在我想转移一个QPair int,int -value,但不幸的是我无法将QPair转换为
我有以下问题:我想通过TCP传输数据,并为此编写了一个函数.为了最大可重用性,函数模板是f(QPair< QString,QVariant>数据).第一个值(也称为QString)由接收器用作目标地址,第二个值包含数据.现在我想转移一个QPair< int,int> -value,但不幸的是我无法将QPair转换为QVariant.最佳的方法是能够传输一对int值而无需编写新函数(或使旧函数重载).在这种情况下,QPair的最佳替代方案是什么?

解决方法

您必须使用特殊宏Q_DECLARE_METATYPE()来使QVariant系统可以使用自定义类型.
Please read the doc carefully了解它是如何工作的.

对于QPair,虽然它很简单:

#include <QPair>
#include <QDebug>

typedef QPair<int,int> MyType;    // typedef for your type
Q_DECLARE_METATYPE(MyType);       // makes your type available to QMetaType system

int main(int argc,char *argv[])
{
    // ...

    MyType pair_in(1,2);
    QVariant variant = QVariant::fromValue(pair_in);
    MyType pair_out = variant.value<MyType>();
    qDebug() << pair_out;

    // ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读