我有以下问题:我想通过TCP传输数据,并为此编写了一个函数.为了最大可重用性,函数模板是f(QPair< QString,QVariant>数据).第一个值(也称为QString)由接收器用作目标地址,第二个值包含数据.现在我想转移一个QPair< int,int> -value,但不幸的是我无法将QPair转换为QVariant.最佳的方法是能够传输一对int值而无需编写新函数(或使旧函数重载).在这种情况下,QPair的最佳替代方案是什么?
解决方法
您必须使用特殊宏Q_DECLARE_MetaTYPE()来使QVariant系统可以使用自定义类型.
Please read the doc carefully了解它是如何工作的.
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; // ... }