QVariant类型的放入和取出必须是相对应的,你放入一个int就必须按int取出。比如你把int包装成一个QVariant,使用的时候要用 QVariant::toInt()重新取出来。

QVariant类作为一个最为普遍的Qt数据类型的联合。

因为C++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用。(联合体当中的变量共用一个存储区),没有了联合变量,我们在物体属性以及数据库的工作等方面受到很多的困扰。一个QVariant对象在一个时间内只保留一种类型的值。我们可以使用canConvert来查询是否能够转换当前的类型。转换类型一般以toT()命名。

我摘录了一下Qt5.5的一个小例子:

QVariant万能数据类型联合_c++

以下是QVariant容纳类型的内容:

QVariant万能数据类型联合_Qt_02