1
我有这段代码。将C++类暴露给QML
class Pet
{
public:
Pet(const QString& nm)
: name(nm)
{}
const QString& name() const { return nm; }
private:
QString nm;
}
class Dog : public QObject, public Pet
{
Q_OBJECT
public:
Dog(QObject* prnt)
: QBject(prnt),
Pet("Tommy")
{}
}
揭露这QML
QQmlApplicationEngine engine;
engine.rootContext()->setProperty("petDog", new Dog(&engine));
// QML项目
console.log(petDog.name()) // TypeError: Property 'name' of object Dog(0x0XXXXX) is not a function
什么是揭露一个C++类QML的所有方法解决?谢谢
我想指出,看着提供的例子,你也可以将类成员设置为'Q_PROPERTY'。 – maxik
@maxik这与可调用方法有什么关系? –
提供的示例具有一个名为'name'的getter实例成员。在我看来,这适合'Q_PROPERTY'比'Q_INVOKABLE'好得多。通过这种方式设置'name()'方法也可以调用。 – maxik