这里我们使用下面这个struct来做说明(这里不管是struct还是class都一样):
struct Player
{
int number;
QString firstName;
QString lastName;
};
为了能在QVariant中使用自定义数据类型做,需要使用Q_DECLARE_METATYPE()来向Qt的元系统声明这个自定义类型。如下列所示:
struct Player
{
...
};
Q_DECLARE_METATYPE(Player);
在作为QVariant传递自定义数据类型时,需要使用QVariant::fromValue()或者qVariantFromValue:
Player player;
object->setProperty("property", QVariant::fromValue(player));
为了更方便一点,你可以在自定义类型中定义一个QVariant() 类型转换符:
struct Player
{
...
operator QVariant() const
{
return QVariant::fromValue(*this);
}
};
这样我们便可以像下面这样使用了:
Player player;
object->setProperty("property", player);