我有一个自定义类型的属性。
class foo : public QObject {
Q_OBJECT
Q_PROPERTY(Custom x READ x WRITE set_x)
public:
void set_x(Custom &x) { /*whatnot*/}
}
QJson 有效地调用了以下动态赋值:
((QObject*)&foo_instance)->setProperty("x", QVariant(QString("something-from-json")))
它返回 false,如 Qt 中所述:
如果该值与属性的类型不兼容,则不会更改该属性,并返回 false。
如何将其填充到我的自定义值中?明确定义一个副功能void set_x(QString)
或void set_x(QVariant)
不可能工作,因为属性系统将不知道这个访问器。
另外,类型兼容性在哪里检查?- 程序控制永远不会到达
int foo::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
元对象编译器生成的函数..
我怎样才能使Custom
这些类型兼容?