1
私はこのコードを持っています。QMLにC++クラスを公開
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
にこれを公開QMLにC++クラスのすべてのメソッドを公開するソリューションとは何ですか?ありがとう
私が指摘したいのは、提供された例を見ると、クラスメンバを 'Q_PROPERTY'として設定することもできます。 – maxik
@maxikそして、それは呼び出し可能なメソッドと関係がありますか? –
提供されているサンプルには、ゲッターで 'name'という名前のインスタンスメンバーがあります。私の意見では、 'Q_PROPERTY'は' Q_INVOKABLE'よりはるかに優れています。このように設定すると、 'name()'メソッドも呼び出し可能になります。 – maxik