QVariant 存储任意类型的源码
来源:互联网 发布:济宁博软件 编辑:程序博客网 时间:2024/06/09 18:53
.............................. // 省略
default:
void *ptr = QMetaType::construct(x->type, copy);
if (!ptr) {
x->type = QVariant::Invalid;
} else {
x->is_shared = true;
x->data.shared = new QVariant::PrivateShared(ptr);
}
break;
}
x->is_null = !copy;
}
//调用v.value()
inline T value() const
{ return qvariant_cast<T>(*this); }
//
template<typename T> inline T qvariant_cast(const QVariant &v)
{
const int vid = qMetaTypeId<T>(static_cast<T *>(0));
if (vid == v.userType())
return *reinterpret_cast<const T *>(v.constData()); // 自定义数据使用reinterpret_cast<const T *>返回
if (vid < int(QMetaType::User)) {
T t;
if (qvariant_cast_helper(v, QVariant::Type(vid), &t)) // Qt内置,使用一个模版返回相对应数据, switch太大就不放出来了.
return t;
}
return T();
}
default:
void *ptr = QMetaType::construct(x->type, copy);
if (!ptr) {
x->type = QVariant::Invalid;
} else {
x->is_shared = true;
x->data.shared = new QVariant::PrivateShared(ptr);
}
break;
}
x->is_null = !copy;
}
//调用v.value()
inline T value() const
{ return qvariant_cast<T>(*this); }
//
template<typename T> inline T qvariant_cast(const QVariant &v)
{
const int vid = qMetaTypeId<T>(static_cast<T *>(0));
if (vid == v.userType())
return *reinterpret_cast<const T *>(v.constData()); // 自定义数据使用reinterpret_cast<const T *>返回
if (vid < int(QMetaType::User)) {
T t;
if (qvariant_cast_helper(v, QVariant::Type(vid), &t)) // Qt内置,使用一个模版返回相对应数据, switch太大就不放出来了.
return t;
}
return T();
}
0 0
- QVariant 存储任意类型的源码
- QVariant识别类型的注册
- QVariant 与 自定义类型 的转换
- Qt中的Qvariant类型
- QVariant源码解析
- any-----安全存储任意类型
- QVariant,QMap<QString,QVariant>的使用方法
- boost.any实现任意类型存储
- 关于QVariant的说明
- 强大的QVariant
- QVariant的使用
- Ogre源码剖析 - 任意类型类Any
- 任意范围,任意类型的随机数生成器
- 生成任意内容任意类型的文件
- QVariant
- QVariant
- QVariant
- QVariant
- iOS及Mac开源项目和学习资料【超级全面】
- Android 内存泄漏查找方法
- Q_DECLARE_METATYPE(MyClass)宏的位置:头文件,类声明后
- arm-linux-ld命令
- Chart学习
- QVariant 存储任意类型的源码
- 新的起点,新的开始
- 关于jQuery的inArray 方法介绍
- [BZOJ 2716]天使玩偶
- 一个简单的用xib制作的购物弹出框
- C++ vector
- jQuery数组($.each,$.grep,$.map,$.merge,$.inArray,$.unique,$.makeArray)处理函数详解
- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
- GDKOI前模拟总结