我有以下问题:我想通过TCP传输数据,并为此编写了一个函数。为了获得最大的可重用性,函数模板是f(QPair<QString, QVariant> data)
。第一个值(又名QString
) 被接收器用作目标地址,第二个包含数据。现在我想转移一个QPair<int, int>
-value,但不幸的是我无法转换QPair
to a QVariant
。最佳方案是能够传输一对int
- 值,而无需编写新函数(或重载旧函数)。最好的替代方案是什么QPair
在这种情况下?
你必须使用特殊的宏Q_DECLARE_METATYPE()
使自定义类型可用QVariant
系统。请仔细阅读文档 http://doc.qt.io/qt-5/qmetatype.html#Q_DECLARE_METATYPE了解它是如何工作的。
对于 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;
// ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)