c – 将QPair转换为QVariant

前端之家收集整理的这篇文章主要介绍了c – 将QPair转换为QVariant前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下问题:我想通过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;

    // ...
}
原文链接:https://www.f2er.com/c/120076.html

猜你在找的C&C++相关文章