gpt4 book ai didi

c++ - QVariant 转换为基本类型

转载 作者:太空狗 更新时间:2023-10-29 23:01:43 28 4
gpt4 key购买 nike

我有这样的类(class):

class QObjectDerived : public QObject
{
Q_OBJECT
// ...
};
Q_DECLARE_METATYPE(QObjectDerived*)

当这个类被存储到 QVariant 中时,会发生这种行为

  QObjectDerived *object = new QObjectDerived(this);
QVariant variant = QVariant::fromValue(object);
qDebug() << variant; // prints QVariant(QObjectDerived*, )
qDebug() << variant.value<QObject*>(); // prints QObject(0x0)
qDebug() << variant.value<QObjectDerived*>(); // QObjectDerived(0x8c491c8)

variant = QVariant::fromValue(static_cast<QObject*>(object));
qDebug() << variant; // prints QVariant(QObject*, QObjectDerived(0x8c491c8) )
qDebug() << variant.value<QObject*>(); // prints QObjectDerived(0x8c491c8)
qDebug() << variant.value<QObjectDerived*>(); // QObject(0x0)

有没有办法将它存储在 QVariant 中并能够将其作为 QObject* 和 QObjectDerived* 获取?

最佳答案

只能写

QObject *value = variant.value<QObjectDerived*>();

可能可以为您的类型部分特化qvariant_cast,但这不是一个有文档支持的用例,我不愿意依赖它。

关于c++ - QVariant 转换为基本类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30452709/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com