En esta página

QQmlListReference Class

La clase QQmlListReference permite manipular las propiedades de QQmlListProperty. Más...

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

Funciones públicas

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

Descripción detallada

QQmlListReference permite a los programas C++ leer y asignar valores a una propiedad de lista QML de una forma sencilla y segura. La principal ventaja sobre el uso de QQmlListProperty es su eliminación de tipos: QQmlListReference no es una plantilla, sino que puede utilizarse para QQmlListProperties de cualquier tipo. Además vigila que el objeto propietario no sea borrado y no permite que se vuelva a acceder a QQmlListProperty si su propietario ha sido borrado.

Puedes crear una QQmlListReference a partir de un objeto y un nombre de propiedad o a partir de QVariant. Ambos son equivalentes:

QQmlListReference ref1(object, "children");

const QVariant var = object->property("children");
QQmlListReference ref2(var);

No todas las QQmlListReferences soportan todas las operaciones. Métodos como canAppend(), canAt(), canClear() y canCount() permiten a los programas consultar si una operación es compatible con una propiedad determinada. La disponibilidad de los métodos depende de los métodos implementados por el QQmlListProperty subyacente. Cuando se construye un QQmlListProperty pasando manualmente las funciones de acceso, se puede restringir el acceso a la lista pasando nullptr a algunas de ellas. QQmlListReference los reconocerá e informará de que no están disponibles.

QQmlListReferences son de tipo seguro. Sólo QObjects que derivan de la clase base correcta pueden ser añadidos a la lista. El método listElementType() puede utilizarse para consultar los QMetaObject del tipo QObject que pueden añadirse. El intento de añadir objetos de un tipo incorrecto a una propiedad de la lista fallará.

Al igual que con otras listas, cuando se accede a un elemento de lista por índice, es responsabilidad de quien llama asegurarse de que no solicita un elemento fuera de rango. Para ello, utilice el método count() antes de llamar a at().

Documentación de las funciones miembro

QQmlListReference::QQmlListReference()

Construye una instancia inválida.

[explicit, since 6.1] QQmlListReference::QQmlListReference(const QVariant &variant)

Construye una QQmlListReference a partir de un QVariant variant que contiene un QQmlListProperty. Si variant no contiene una propiedad de lista, se crea una QQmlListReference inválida. Si el objeto que posee la propiedad de lista se destruye después de construir la referencia, ésta dejará de ser válida automáticamente. Es decir, es seguro mantener instancias QQmlListReference incluso después de que el objeto sea eliminado.

Esta función se introdujo en Qt 6.1.

QQmlListReference::QQmlListReference(QObject *object, const char *property)

Construye una QQmlListReference para object's property. Si property no es una propiedad de lista, se crea una QQmlListReference inválida. Si object se destruye después de construir la referencia, ésta dejará de ser válida automáticamente. Es decir, es seguro mantener instancias QQmlListReference incluso después de que object sea eliminado.

bool QQmlListReference::append(QObject *object) const

Añade object a la lista. Devuelve true si la operación se ha realizado correctamente, en caso contrario false.

Véase también canAppend().

QObject *QQmlListReference::at(qsizetype index) const

Devuelve el elemento de la lista en index, o nullptr si la operación falló.

Véase también canAt().

bool QQmlListReference::canAppend() const

Devuelve true si se puede anexar a la propiedad de la lista, en caso contrario false. Devuelve false si la referencia no es válida.

Véase también append().

bool QQmlListReference::canAt() const

Devuelve true si la propiedad de la lista se puede consultar por índice, en caso contrario false. Devuelve false si la referencia no es válida.

Véase también at().

bool QQmlListReference::canClear() const

Devuelve true si se puede borrar la propiedad de la lista, en caso contrario false. Devuelve false si la referencia no es válida.

Véase también clear().

bool QQmlListReference::canCount() const

Devuelve true si la propiedad list puede ser consultada por su número de elementos, en caso contrario false. Devuelve false si la referencia no es válida.

Véase también count().

bool QQmlListReference::canRemoveLast() const

Devuelve true si el último elemento se puede eliminar de la propiedad list, en caso contrario false. Devuelve false si la referencia no es válida.

Véase también removeLast().

bool QQmlListReference::canReplace() const

Devuelve true si los elementos de la propiedad list pueden ser reemplazados, en caso contrario false. Devuelve false si la referencia no es válida.

Véase también replace().

bool QQmlListReference::clear() const

Borra la lista. Devuelve true si la operación ha tenido éxito, en caso contrario false.

Véase también canClear().

qsizetype QQmlListReference::count() const

Devuelve el número de elementos de la lista, o 0 si la operación ha fallado.

bool QQmlListReference::isManipulable() const

Devuelve true si at(), count(), append(), y clear() o removeLast() están implementados, para que puedas manipular la lista.

Tenga en cuenta que replace() y removeLast() pueden emularse almacenando todos los elementos y reconstruyendo la lista con clear() y append(). Por lo tanto, no son necesarios para que la lista sea manipulable. Además, clear() puede emularse utilizando removeLast().

Véase también isReadable(), at(), count(), append(), clear(), replace() y removeLast().

bool QQmlListReference::isReadable() const

Devuelve true si at() y count() están implementados, por lo que se puede acceder a los elementos.

Véase también isManipulable(), at(), y count().

bool QQmlListReference::isValid() const

Devuelve true si la instancia se refiere a una propiedad de lista válida, en caso contrario false.

const QMetaObject *QQmlListReference::listElementType() const

Devuelve el QMetaObject para los elementos almacenados en la propiedad de la lista, o nullptr si la referencia no es válida.

El QMetaObject se puede utilizar por adelantado para determinar si una instancia dada se puede añadir a una lista. Si no pasaste un motor en la construcción esto puede devolver nullptr.

QObject *QQmlListReference::object() const

Devuelve el objeto de la propiedad list. Devuelve nullptr si la referencia no es válida.

bool QQmlListReference::removeLast() const

Elimina el último elemento de la lista. Devuelve true si la operación se ha realizado correctamente, false en caso contrario.

Véase también canRemoveLast().

bool QQmlListReference::replace(qsizetype index, QObject *object) const

Sustituye el elemento index de la lista por object. Devuelve true si la operación se ha realizado correctamente, en caso contrario false.

Véase también canReplace().

[since 6.2] qsizetype QQmlListReference::size() const

Devuelve el número de elementos de la lista, o 0 si la operación falló.

Esta función se introdujo en Qt 6.2.

bool QQmlListReference::operator==(const QQmlListReference &other) const

Compara este QQmlListReference con other, y devuelve true si son iguales. Los dos sólo se consideran iguales si uno se creó a partir del otro mediante asignación de copia o construcción de copia.

Nota: Las referencias creadas independientemente al mismo objeto no se consideran iguales.

© 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.