- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有以下问题:我想通过 TCP 传输数据,并为此编写了一个函数。为了获得最大的可重用性,函数模板是 f(QPair<QString, QVariant> data)
.第一个值(又名 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;
// ...
}
关于c++ - 将 QPair 转换为 QVariant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461592/
我有以下问题:我想通过 TCP 传输数据,并为此编写了一个函数。为了获得最大的可重用性,函数模板是 f(QPair data) .第一个值(又名 QString )被接收器用作目标地址,第二个包含数据
QPair 很好,但如果我需要 3 个项目怎么办?我应该只创建一个结构,还是 Qt 已经涵盖了我? 最佳答案 作为QTBUG-22441表明,开发人员无意添加 std::tuple 的 Qt 模拟。
我想制作一个数据结构来通过两种方式访问字符串: 通过ID访问 按名称访问 我的第一个想法是为每种方法使用两个映射,但这会导致数据重复: QMap accessById; QMap accessBy
我想存储一个 QPair 和 QString,或者换句话说,我想为每个索引存储三个值(int、int、String)。为此,我选择了一个 QMap,结果还不错,其中 QString 作为键,QPair
为了避免大量不必要的复制,我试图将 unique_ptr 存储在一对列表中。我正在使用一个简单的类 Test,它带有一个 QString; 我正在使用 VS2013 和 Qt5.4 using std
警告: qvector.h(509): warning C4127: conditional expression is constant (main.cpp) qvector.h(506) : wh
我有一个整数对列表,我想使用 Qt Framework 以持久的方式存储它们。 我想到了使用 QList>作为列表的类型,并使用 QSettings 将它们存储在 .ini 文件中. 不幸的是,函数Q
是否可以写和初始化 QMap> 在 Qt 5.10 中? 例如我想这样做 QMap> ee{"MAC", 0,0,}; // string, section 0, line 0 当我提供 Mac 时
我是一名优秀的程序员,十分优秀!