我有一个自定义类型的属性。重载qt属性
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,如文档讲解:
如果该值不符合属性的类型兼容的,财产没有改变,并返回false。
我该如何将它填充到我的自定义值中?清楚地定义一个侧面功能void set_x(QString)
或void set_x(QVariant)
不可能工作,因为属性系统将不知道这个访问器。
此外,检查类型兼容性在哪里? - 程序控制从未达到
int foo::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
由元对象编译器生成的函数..
我怎样才能让这些类型Custom
兼容吗?
对接受的答案的评论实际上为我指出了。 – qdot