QQmlListReference Class
QQmlListReference クラスを使用すると、QQmlListProperty のプロパティを操作することができます。詳細...
| ヘッダー: | #include <QQmlListReference> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
パブリック関数
| QQmlListReference() | |
(since 6.1) | QQmlListReference(const QVariant &variant) |
| QQmlListReference(QObject *object, const char *property) | |
| bool | append(QObject *object) const |
| QObject * | at(qsizetype index) const |
| bool | canAppend() const |
| bool | canAt() const |
| bool | canClear() const |
| bool | canCount() const |
| bool | canRemoveLast() const |
| bool | canReplace() const |
| bool | clear() const |
| qsizetype | count() const |
| bool | isManipulable() const |
| bool | isReadable() const |
| bool | isValid() const |
| const QMetaObject * | listElementType() const |
| QObject * | object() const |
| bool | removeLast() const |
| bool | replace(qsizetype index, QObject *object) const |
(since 6.2) qsizetype | size() const |
| bool | operator==(const QQmlListReference &other) const |
詳細な説明
QQmlListReference を使用すると、C++ プログラムは、QML リストプロパティから値を読み取ったり、値を割り当てたりすることを、シンプルかつ型安全な方法で実行できます。QQmlListProperty 自体を使用する場合との主な利点は、その型消去にあります。QQmlListReferenceはテンプレートではありませんが、あらゆる型のQQmlListPropertiesに使用できます。さらに、所有オブジェクトの削除を監視し、所有オブジェクトが削除された場合は、QQmlListProperty へのアクセスを許可しなくなります。
QQmlListReferenceは、オブジェクトとプロパティ名、あるいはQVariant のいずれかから作成できます。これら2つは同等です:
QQmlListReference ref1(object, "children");
const QVariant var = object->property("children");
QQmlListReference ref2(var);すべてのQQmlListReferenceがすべての操作をサポートしているわけではありません。canAppend()、canAt()、canClear()、canCount()といったメソッドを使用することで、プログラムは特定のプロパティに対してその操作がサポートされているかどうかを問い合わせることができます。 これらのメソッドの利用可否は、基盤となるQQmlListProperty が実装しているメソッドに依存します。アクセサ関数を手動で渡してQQmlListProperty を構築する際、一部の関数にnullptrを渡すことで、リストへのアクセスを制限できます。QQmlListReferenceはそれらを認識し、利用不可として報告します。
QQmlListReferenceこれらのリストは型安全です。正しい基底クラスを継承したQObjectのみがリストに追加できます。listElementType()メソッドを使用すると、追加可能なQObject 型のQMetaObject を照会できます。リストプロパティに不適切な型のオブジェクトを追加しようとすると、失敗します。
他のリストと同様に、インデックスを使用してリストの要素にアクセスする場合、範囲外の要素を要求しないようにすることは呼び出し側の責任です。このため、at() を呼び出す前に、count() メソッドを使用してください。
メンバ関数のドキュメント
QQmlListReference::QQmlListReference()
無効なインスタンスを作成します。
[explicit, since 6.1] QQmlListReference::QQmlListReference(const QVariant &variant)
QQmlListProperty を含むQVariant variant から、QQmlListReferenceを生成します。variant にlistプロパティが含まれていない場合、無効なQQmlListReferenceが生成されます。参照の生成後にlistプロパティを所有するオブジェクトが破棄された場合、その参照は自動的に無効になります。つまり、オブジェクトが削除された後でも、QQmlListReferenceのインスタンスを保持しても安全です。
この関数は Qt 6.1 で導入されました。
QQmlListReference::QQmlListReference(QObject *object, const char *property)
object のproperty に対して、QQmlListReferenceを生成します。property がリストプロパティでない場合、無効なQQmlListReferenceが生成されます。参照の生成後にobject が破棄された場合、その参照は自動的に無効になります。つまり、object が削除された後でも、QQmlListReferenceのインスタンスを保持しても安全です。
bool QQmlListReference::append(QObject *object) const
リストに `object ` を追加します。操作が成功した場合は `true` を返し、失敗した場合は `false` を返します。
canAppend()も参照してください 。
QObject *QQmlListReference::at(qsizetype index) const
index にあるリスト要素を返します。操作が失敗した場合は、nullptr を返します。
canAt()も参照してください 。
bool QQmlListReference::canAppend() const
リストプロパティに要素を追加できる場合は true を返し、そうでない場合は false を返します。参照が無効な場合は false を返します。
append()も参照してください 。
bool QQmlListReference::canAt() const
リストのプロパティがインデックスで参照可能な場合は true を返し、そうでない場合は false を返します。参照が無効な場合は false を返します。
at()も参照してください 。
bool QQmlListReference::canClear() const
リストプロパティをクリアできる場合は true を返し、そうでない場合は false を返します。参照が無効な場合は false を返します。
clear()も参照してください 。
bool QQmlListReference::canCount() const
リストのプロパティから要素数を取得できる場合は true を返し、そうでない場合は false を返します。参照が無効な場合は false を返します。
count()も参照してください 。
bool QQmlListReference::canRemoveLast() const
リストプロパティから最後の項目を削除できる場合は true を返し、そうでない場合は false を返します。参照が無効な場合は false を返します。
removeLast()も参照してください 。
bool QQmlListReference::canReplace() const
リストプロパティ内の項目が置換可能な場合は true を返し、そうでない場合は false を返します。参照が無効な場合は false を返します。
replace()も参照してください 。
bool QQmlListReference::clear() const
リストをクリアします。操作が成功した場合は true を返し、そうでない場合は false を返します。
canClear()も参照してください 。
qsizetype QQmlListReference::count() const
リスト内の項目の数を返します。操作が失敗した場合は 0 を返します。
bool QQmlListReference::isManipulable() const
at()、count()、append()、およびclear() またはremoveLast() のいずれかが実装されている場合、true を返します。これにより、リストを操作できるようになります。
なお、replace() およびremoveLast() は、すべての項目を一時保存し、clear() およびappend() を使用してリストを再構築することでエミュレート可能です。したがって、リストを操作可能にするためにこれらが必要というわけではありません。さらに、clear() はremoveLast() を使用してエミュレート可能です。
関連項目: isReadable()、at()、count()、append()、clear()、replace()、およびremoveLast()。
bool QQmlListReference::isReadable() const
at() およびcount() が実装されている場合、true を返します。これにより、要素にアクセスできるようになります。
isManipulable()、at()、およびcount()も参照してください 。
bool QQmlListReference::isValid() const
インスタンスが有効なリストプロパティを参照している場合は true を返し、そうでない場合は false を返します。
const QMetaObject *QQmlListReference::listElementType() const
listプロパティに格納されている要素のQMetaObject を返します。参照が無効な場合はnullptr を返します。
QMetaObject は、特定のインスタンスをリストに追加できるかどうかを事前に判断するために使用できます。インスタンスの生成時にエンジンを渡していない場合、nullptrが返されることがあります。
QObject *QQmlListReference::object() const
リストプロパティのオブジェクトを返します。参照が無効な場合は、nullptr を返します。
bool QQmlListReference::removeLast() const
リストの最後の要素を削除します。操作が成功した場合は true を返し、失敗した場合は false を返します。
canRemoveLast()も参照してください 。
bool QQmlListReference::replace(qsizetype index, QObject *object) const
リスト内のindex という項目をobject に置き換えます。操作が成功した場合は true を返し、失敗した場合は false を返します。
canReplace()も参照してください 。
[since 6.2] qsizetype QQmlListReference::size() const
リスト内の項目の数を返します。操作が失敗した場合は 0 を返します。
この関数は Qt 6.2 で導入されました。
bool QQmlListReference::operator==(const QQmlListReference &other) const
QQmlListReference とother を比較し、両者が等しい場合にtrue を返します。これら2つが等しいとみなされるのは、一方が他方からコピー代入またはコピーコンストラクタによって生成された場合に限られます。
注: 同じオブジェクトへの、それぞれ独立して 作成された参照は、等しいとはみなされません。
© 2026 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.