我可以访问在 C++ 中声明为 MEMBER 的 QPROPERTY 吗?

ymo*_*eau 2 c++ qt qproperty

我有一个QQuickItem类,其中一些成员在 QML 中使用,因此它们的声明如下:

Q_PROPERTY (bool myBool MEMBER _myBool NOTIFY myBoolChanged)
Run Code Online (Sandbox Code Playgroud)

如果我想在 C++ 代码中(从另一个类)访问此成员,我是否有免费的get-accessor ?它的语法是什么?

我不清楚该文档:

如果未指定 READ 访问器函数,则需要 MEMBER 变量关联。这使得给定的成员变量可读可写,而无需创建 READ 和 WRITE 访问器函数。

这是否使成员只能在 QML 中或在 C++ 中可读可写?

jpn*_*rmi 5

Qt 不会为您生成任何 C++ API getter,但如果您想这样做,可以通过元对象系统读取属性值:

QMetaProperty prop = obj->metaObject()->property(...);
bool value = prop.read(obj).toBool();
Run Code Online (Sandbox Code Playgroud)

除非您正在开发基于元对象系统的通用内容,否则您可能需要定义一个在 C++ 中使用的普通 getter。Q_PROPERTY 的 MEMBER 关键字并不是标准编程实践的捷径。