QQmlListProperty Class

template <typename T> class QQmlListProperty

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

ヘッダ #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

パブリック変数

void *data
QObject *object

マクロ

詳しい説明

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

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

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

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

Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)

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

QQmlListReference を使えば、C++ から QQmlListProperty を操作する際に、多少オーバーヘッドが発生しますが、より人間工学的な API を使うことができます。

第5章:リスト・プロパティ型の使用」およびQQmlListReferenceも参照してください

メンバ型ドキュメント

[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 の値を作るための便利なコンストラクタです。リストを所有するobjectlist 自身は、それらを参照する QQmlListProperty を保持している限り、提供され、生かされていなければなりません。

これは、QList に支えられた QQmlListProperty を提供する最も簡単で安全な方法です。典型的な呼び出しは次のようになります:

QQmlListProperty<PieSlice> PieChart::slices()
{
    return QQmlListProperty<PieSlice>(this, &m_slices);
}

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)

append,count,at,clear の操作関数群から 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 が存在する限り有効である。

どの関数に対しても Null ポインタを渡すことができ、可能であれば、その関数は他の関数を使用して合成されます。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 と等しい場合は真を、そうでない場合は偽を返す。

メンバー変数ドキュメント

void *QQmlListProperty::data

このフィールドは任意のデータ・ポインタを保持することができる。

手動でアクセサ・メソッドを実装し、カスタム・データを格納する必要がある場合、QQmlListProperty コンストラクタに任意のポインタを渡し、後で同じQQmlListProperty にアクセスするときにdataフィールドからそのポインタを取り出すことができます。

QQmlListProperty constructed from a QList pointer 、オーナーから直接リストの内容にアクセスできないため、このフィールドを使ってリスト自体へのポインタを格納します。

QObject *QQmlListProperty::object

所有者を保持します。QQmlListProperty

手動でアクセサメソッドを実装する場合、操作されたリストの内容を取得するためにこのフィールドを使用する必要があるかもしれません。

マクロのドキュメント

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_REPLACE 、およびQML 文書によるオブジェクト型の定義も参照してください

QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE

このマクロは、このクラスのリストプロパティの 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_DEFAULTQMLドキュメントによるオブジェクト型の定義も参照してください

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ドキュメントによるオブジェクト型の定義も参照してください

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.