1、要使一个类型能转为QVariant,得让QT认识这个类型,需要用到Q_DECLARE_METATYPE()。这样就认识了。
struct UserDefineData
{
QString testStr;
int testInt;
bool testBool;
}
Q_DECLARE_METATYPE(UserDefineData)
2、数据相互转换
然后我们就可以使用了。
UserDefineData uddata;
1、转为QVariant:
QVariant udvar = QVairant::fromValue(uddata);
2、从QVariant转为自定义类型,要先判断是否可以转换:
if(udvar.canConvert<UserDefineData>()) {
UserDefineData uddata2 = udvar.value<UserDefineData>();
}
3、如果你想要使用数据流QDataStream,那么需要重写操作符号<<和>>。且在使用QDataStream前,要先注册自定义类型(如UserDefineData)。
1、重写操作符合<<和>>
inline QDataStream &operator<<(QDataStream &out, const UserDefineData &udvar)
{
out << udvar.testStr << udvar.testInt << udvar.testBool;
return out;
}
inline QDataStream &operator>>(QDataStream &in, UserDefineData &udvar)
{
out >> udv

本文介绍了如何在Qt中使用Q_DECLARE_METATYPE声明并转换UserDefineData结构到QVariant,以及如何实现QDataStream的自定义类型操作符以进行数据流处理。
最低0.47元/天 解锁文章
6990

被折叠的 条评论
为什么被折叠?



