QQmlListProperty Class

template <typename T> class QQmlListProperty

QQmlListProperty クラスは、QObject から派生したクラスのリストのようなプロパティを QML に公開するためのクラスです。さらに...

Header: #include <QQmlListProperty>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml

パブリックタイプ

パブリック関数

QQmlListProperty(QObject *object, QList<T *> *list)
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at)
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear)
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear, QQmlListProperty<T>::ReplaceFunction replace, QQmlListProperty<T>::RemoveLastFunction removeLast)
bool operator==(const QQmlListProperty<T> &other) const

マクロ

詳細説明

QMLには多くのリストプロパティがあり、複数のオブジェクトの値を代入する ことができます。QMLのリストプロパティの使い方は次のようになります:

FruitBasket {
    fruit: [
        Apple {},
        Orange{},
        Banana{}
    ]
}

QQmlListPropertyは、QMLがリストに対して実行できる一連の操作(項目の追加、項目の取得、リストのクリア)を表す関数ポインタ群をカプセル化したものです。将来的には、さらなる操作がサポートされるかもしれません。すべてのリストプロパティは append 操作を実装しなければなりませんが、それ以外はオプションです。

リストプロパティを提供するには、C++クラスは操作コールバックを実装し、プロパティゲッターから適切なQQmlListProperty値を返す必要があります。リスト・プロパティはセッターを持つべきではありません。上の例では、Q_PROPERTY() 宣言は次のようになります:

Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

QMLのリスト・プロパティは型安全です。この場合、FruitQObject の型であり、AppleOrangeBanana はすべてこの型から派生しています。

第5章 リストプロパティの型の使用も参照してください

メンバ型ドキュメント

[alias] QQmlListProperty::AppendFunction

void (*)(QQmlListProperty<T> *property, T *value) のシノニム。

value をリストproperty に追加する。

[alias] QQmlListProperty::AtFunction

T *(*)(QQmlListProperty<T> *property, qsizetype index) の同義語。

リストproperty の位置index にある要素を返す。

[alias] QQmlListProperty::ClearFunction

void (*)(QQmlListProperty<T> *property) の同義語 .

リストのクリアproperty.

[alias] QQmlListProperty::CountFunction

qsizetype (*)(QQmlListProperty<T> *property) の同義語 .

リストの要素数を返すproperty.

[alias] QQmlListProperty::RemoveLastFunction

void (*)(QQmlListProperty<T> *property) の対義語 .

リストから最後の要素を削除property.

[alias] QQmlListProperty::ReplaceFunction

void (*)(QQmlListProperty<T> *property, qsizetype index, T *value) の同義語 .

リストproperty の位置index にある要素をvalue で置き換える.

メンバ関数ドキュメント

QQmlListProperty::QQmlListProperty(QObject *object, QList<T *> *list)

既存のQList list から QQmlListProperty の値を作るための便利なコンストラクタです。object が存在する限り、list の参照は有効でなければなりません。object を指定する必要があります。

QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at)

読み取り専用の QQmlListProperty を、操作関数countat のセットから構築します。操作関数内からアクセスできる不透明なdata ハンドルを渡すことができます。リストプロパティは、object が存在する限り有効です。

QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear)

操作関数appendcountatclear の集合から QQmlListProperty を構築します。操作関数の中からアクセスできる不透明なdata ハンドルを渡すことができます。リスト・プロパティは、object が存在する限り有効である。

どの関数に対してもヌル・ポインタを渡すことができる。NULLポインタが渡された場合、リストはデバッガによって設計も変更もできなくなります。すべての関数に対して有効なポインタを指定することをお勧めします。

注意: 結果として得られる QQmlListProperty は、removeLast() メソッドと replace() メソッドを、count,at,clear,append を使って合成します。これは遅い。リストをクリアする以上の操作を行う場合は、これらのメソッドを明示的に指定する必要があります。

QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear, QQmlListProperty<T>::ReplaceFunction replace, QQmlListProperty<T>::RemoveLastFunction removeLast)

操作関数append,count,at,clear,replace, removeLast のセットから QQmlListProperty を構築します。操作関数内からアクセスできる不透明なdata ハンドルを渡すこともできます。リスト・プロパティは、object が存在する限り有効である。

ヌルポインタはどの関数にも渡すことができ、可能であれば、それぞれの関数は他の関数を使用して合成されます。QQmlListPropertyは、。

  • clear countremoveLast
  • replace count, , , およびat clear append
  • replace using , , , およびcount at removeLast append
  • removeLast count, , , およびat clear append

を使うことができる。これは遅いですが、もしあなたのリストがこれらのプリミティブに対してより高速なオプションをネイティブで提供していない場合、合成されたものを使用した方がよいでしょう。

さらに、countatappendclear のいずれかが明示的に与えられても合成されてもいない場合、リストはデバッガによって設計も変更もできません。このような状況を避けるために、十分な有効なポインタを提供することを推奨します。

bool QQmlListProperty::operator==(const QQmlListProperty<T> &other) const

このQQmlListPropertyother と等しい場合は true を返し、そうでない場合は false を返します。

マクロ・ドキュメント

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND

このマクロは、Append に対するこのクラスのリスト・プロパティの動作を定義します。派生型でプロパティを代入する場合、値はベース・クラスのものに追加されます。これはデフォルトの動作です。

class FruitBasket : QObject {
    Q_OBJECT
    QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND
    Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

    public:
    // ...
    QQmlListProperty<Fruit> fruit();
    // ...
};

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULTQML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACEQMLドキュメントによるオブジェクト型の定義も参照してください

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE

このマクロは、このクラスのリストプロパティを置換する動作を定義します。派生型のプロパティを代入すると、その値は基底クラスのものを置き換えます。

class FruitBasket : QObject {
    Q_OBJECT
    QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE
    Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

    public:
    // ...
    QQmlListProperty<Fruit> fruit();
    // ...
};

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPENDQML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT 、およびQML 文書によるオブジェクト型の定義も参照してください

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT

このマクロは、このクラスのリストプロパティの振る舞いを ReplaceIfNotDefault に定義します。派生型にプロパティを代入すると、デフォルトプロパティでない限り、値は基底クラスのものに置き換わります。デフォルト・プロパティの場合、値はベース・クラスのものに追加されます。

class FruitBasket : QObject {
    Q_OBJECT
    QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT
    Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

    public:
    // ...
    QQmlListProperty<Fruit> fruit();
    // ...
};

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPENDQML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACEQMLドキュメントによるオブジェクト型の定義も参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。