首页 > 编程知识 正文

qvariantmap报错崩溃,qt一个类包含另一个类

时间:2023-05-04 01:35:09 阅读:27800 作者:2098

1、QVariant类用于封装数据成员的类型和值等信息。 这个类类似于c共享体union。 QVariant对象是一个,一次只能存储一个类型的值。 此类封装了Qt中的常用类型,对于QVariant不支持的类型(如用户定义的类型),必须使用q_declare_metatype(type )宏进行注册。 2、因为QVariant具有常用类型的单形参数构造函数,所以可以将这些常用类型转换为QVariant类型。 此外,由于QVariant还重载了赋值运算符,因此可以将常用类型的值直接分配给QVariant对象。 注意:从c语法可以看出,单形参数的构造函数可以进行类型转换。 3、使用QVariant构造函数和赋值运算符。 注意: QVariant没有char类型的构造函数,使用char值会将其转换为相应的int类型。 QQ (1; 调用//QVariant(int )构造函数创建qvariant类型的对象,并将值1保存为v。 v=2; 调用//QVariant赋值运算符,并将值2保存为v。 因为qvariant是类似于共同体的类,所以同时只保存一个值。 4,http://www.Sina.com/http://www.Sina.com /提供了以下函数: 获取http://www.Sina.com/qvariant对象的当前存储值的类型。 类型为qmetatype33603360ttom如果类型无效,则返回0。 返回由获取 QVariant 枚举类型QMetaType:Type表示的类型作为字符串。 枚举值QMetaType: UnknownType或如果不存在,返回空指针。 3358www.Sina.com/qvariantv(1; coutv.typeName () endl; //intcoutv.typetoname(v.type ) ) endl; 要打印存储在int 5,http://www.Sina.com/qvariant对象中的值,请使用以下函数:

对象存储的值的类型值的副本存储在QVariant对象中。 如果类型t是QVariant不支持的类型,则使用QMetaType存储值;如果QMetaType也无法处理,则发生编译错误。 注意:对于用户定义的类型,必须使用宏q_declare_metatype(…)注册到Type type() const ,将存储的值转换为类型t并返回转换后的值。 存储值本身保持不变。 如果t是QVariant支持的类型,则此函数与toInt、toString等函数具有完全相同的功能。 注:使用此函数时,必须使用尖括号指定t的类型。 例如,xx.valueint (;const char * typeName() const; 其中t是一种类型,例如,如果t是int,则函数形式为int toInt ()。 此函数用于将存储的值转换为类型t,并返回转换后的值,存储的值本身保持不变。 其中最常用的是toString函数,该函数将保存的值转换为QString格式,以便可以将保存的值输出为字符串。 没有与const char* typeToName(int t); 自定义类型对应的toT函数。 例如class C{}; 没有toC函数。 要将保存的值转换为自定义类型,必须使用value函数,并且必须在自定义类型中注册。 6,http://www.Sina.com/: qvariant的枚举类型Type已过时。

7 .使用QVariant默认构造函数,可以创建无效的QVariant对象(或空的QVariant对象),并通过isNull )成员函数进行确定。

QQ (' a ); /*QVariant没有专用的char构造函数,这里的字符a将转换为int类型,因此v存储数字97而不是字符a。 */coutv.valueint () endl; //输出97coutv.valuechar () endl; 输出//a,将97变换为char型,输出变换后的值。 coutv.toChar ().toLatin1 ) ) endl; /*输出a,原因相同,请注意,toChar返回的类型是QChar而不是char。 */coutv.toString ().toStdString ) ) endl; /*将保存在输出97、v中的值变换为QString,作为字符串输出。 */coutv.typeName () endl; 输出//int时,存储在v中的值类型为intcoutv.typetoname(v.type ) ) endl; /*输出int。 type返回以枚举格式表示的类型,用于存储值,typeToName将以枚举值表示的类型显示为字符串。 */char c='b '; v.setvalue(c; coutv.toString ().toStdString ) ) endl; bcoutv.typeName () endl; 输出/*char。 如果直接分配QVariant构造函数和char类型字符,则此处将输出int。 这是setValue和他们的区别。 */C mc; //自定义类型c的对象MC//qvariantv1(MC; //错误,没有相应的构造函数。 QQ v2; //v2=mc; //错误,没有与类型c匹配的赋值运算符函数。 //v2.setvalue(MC; //错误,自定义类型c未使用宏Q_DECLARE_METATYPE声明。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。