也就是说,我们有一个不继承QObject的类:
class Apply
{
Q_GADGET
Q_PROPERTY(QVariant func READ func WRITE setFunc)
public:
Apply();
QVariant func() const;
void setFunc(const QVariant &func);
ArgContainer args() const;
void setArgs(const ArgContainer &value);
// void substitute(ArgContainer actualArgs);
private:
QVariant _func; //func, name of func, name of a registered action
ArgContainer _args;
};
Q_DECLARE_METATYPE(Apply)
您可以在类中定义属性,如Q_GADGET. 现在如何访问它(不是在 QML 中!)?我这样尝试:
Apply a;
a.property("func");
不property()
我正在尝试访问metaObject:
Apply a;
a.metaObject();
没有这样的东西。
staticMetaObject他们写道:
“staticMetaObject 是 QMetaObject 类型,并提供对使用 Q_ENUMS 声明的枚举的访问。”
它可以用来访问道具吗?如果不是,如何读/写 Q_GADGET 的类属性?
假设我们有一个
Gadget带有属性的类name:如果您使用的是 Qt 5.5+,那么您可以像这样操作此属性:
说实话,不是很方便。我会编写自己的方法,类似于以下方法
QObject:如果你只有一门这样的课,那么你可以停在那里。但是如果有很多这样的类,那么你需要以某种方式概括所有这些。
第一个选项。添加宏
Q_GADGET:现在,如果您
Q_GADGET使用insteadMY_GADGET,那么方法property和setProperty将始终在手边。第二个选项。使模板函数与属性一起使用: