2

簡単なメモ: 他のトピックを確認しましたが、正しい構文を特定できませんでした。

class Pet : public QObject
{
    Q_OBJECT
    Q_ENUMS(PetStatus)
public:
    enum PetStatus { Stun, Rooted };
    ...
}

qmlRegisterType<Pet>(); //In other class.

このクラスは、PetStage 内の QList で使用される PetTeam 内の QList で使用されます。上位 2 つのクラスには列挙型がありません。PetStage オブジェクトだけが QML に送信され、そこから、階層を認識しているため、QML 内から他のすべてにアクセスします。

petStage.team[1].pet[2].name //Works in QML

私が抱えている問題は、QMLで列挙型を使用したいのですが、QMLで使用する正しい構文がわからないため、

console.log(X.Rooted) //prints 1; I thought Pet.Rooted would work but it does not

正しく機能します。

4

1 に答える 1

2

解決策は、別の qmlRegisterType を作成することです

qmlRegisterType<Pet>("PetStatus", 1, 0, "PetStatus");

そこから QMLscript にインポートします

import PetStatus 1.0

を使用してQMLから呼び出します

PetStatus.Rooted //Or whatever naming convention you used for your elements
于 2013-10-22T21:01:19.730 に答える