如何在Qt中使用自定义数据类型
这里我们使用下面这个struct来做说明(这里不管是struct还是class都一样):
- struct Player
- {
- int number;
- QString firstName;
- QString lastName;
- };
复制代码
QVariant
为了能在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);
复制代码