QQmlListProperty Class
template <typename T> class QQmlListPropertyLa clase QQmlListProperty permite a las aplicaciones exponer propiedades tipo lista de clases derivadas de QObject a QML. Más...
| Cabecera: | #include <QQmlListProperty> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml)target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
Tipos públicos
Funciones Públicas
| 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 |
Variables públicas
Macros
| QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND | |
| QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE | |
| QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT |
Descripción detallada
QML tiene muchas propiedades de lista, donde se puede asignar más de un valor de objeto. El uso de una propiedad de lista de QML tiene el siguiente aspecto:
FruitBasket {
fruit: [
Apple {},
Orange{},
Banana{}
]
}QQmlListProperty encapsula un grupo de punteros a funciones que representan el conjunto de acciones que QML puede realizar sobre la lista: añadir elementos, recuperar elementos y borrar la lista. En el futuro, es posible que se admitan operaciones adicionales. Todas las propiedades de lista deben implementar la operación append, pero el resto son opcionales.
Para proporcionar una propiedad de lista, una clase C++ debe implementar los callbacks de la operación, y luego devolver un valor QQmlListProperty apropiado desde el getter de la propiedad. Las propiedades de lista no deben tener setter. En el ejemplo anterior, la declaración Q_PROPERTY() tendrá este aspecto:
Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)
Las propiedades de lista QML son de tipo seguro - en este caso Fruit es un tipo QObject del que derivan Apple, Orange y Banana.
Puedes utilizar QQmlListReference para manipular una QQmlListProperty desde C++ utilizando una API ligeramente más ergonómica, a costa de cierta sobrecarga.
Véase también el Capítulo 5: Uso de los tipos de propiedades de lista y QQmlListReference.
Documentación de tipos de miembros
[alias] QQmlListProperty::AppendFunction
Sinónimo de void (*)(QQmlListProperty<T> *property, T *value).
Añadir value a la lista property.
[alias] QQmlListProperty::AtFunction
Sinónimo de T *(*)(QQmlListProperty<T> *property, qsizetype index).
Devuelve el elemento en la posición index de la lista property.
[alias] QQmlListProperty::ClearFunction
Sinónimo de void (*)(QQmlListProperty<T> *property).
Borrar la lista property.
[alias] QQmlListProperty::CountFunction
Sinónimo de qsizetype (*)(QQmlListProperty<T> *property).
Devuelve el número de elementos de la lista property.
[alias] QQmlListProperty::RemoveLastFunction
Sinónimo de void (*)(QQmlListProperty<T> *property).
Eliminar el último elemento de la lista property.
[alias] QQmlListProperty::ReplaceFunction
Sinónimo de void (*)(QQmlListProperty<T> *property, qsizetype index, T *value).
Sustituye el elemento en la posición index de la lista property por value.
Documentación de las funciones miembro
QQmlListProperty::QQmlListProperty(QObject *object, QList<T *> *list)
Constructor de conveniencia para hacer un valor QQmlListProperty a partir de un QList list existente. El object propietario de la lista y el propio list deben proporcionarse y mantenerse vivos mientras se mantenga un QQmlListProperty que haga referencia a ellos.
Esta es la forma más fácil y segura de proporcionar una QQmlListProperty respaldada por un QList y debería utilizarse en la mayoría de los casos. Una invocación típica tiene este aspecto:
QQmlListProperty<PieSlice> PieChart::slices() { return QQmlListProperty<PieSlice>(this, &m_slices); }
QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at)
Construye una QQmlListProperty de sólo lectura a partir de un conjunto de funciones de operación count y at. Se puede pasar un manejador opaco data al que se puede acceder desde las funciones de operación. La propiedad de lista sigue siendo válida mientras exista el object al que pertenece la propiedad de lista.
QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear)
Construye una QQmlListProperty a partir de un conjunto de funciones de operación append, count, at, y clear. Se puede pasar un manejador opaco data al que se puede acceder desde las funciones de operación. La propiedad de lista sigue siendo válida mientras exista el object propietario de la propiedad de lista.
Se pueden pasar punteros nulos para cualquier función. Si se pasan punteros nulos, la lista no podrá ser diseñada ni alterada por el depurador. Se recomienda proporcionar punteros válidos para todas las funciones.
Nota: La QQmlListProperty resultante sintetizará los métodos removeLast() y replace() usando count, at, clear, y append si todos ellos son dados. Esto es lento. Si pretende manipular la lista más allá de limpiarla, debería proporcionar explícitamente estos métodos.
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)
Construye una QQmlListProperty a partir de un conjunto de funciones de operación append, count, at, clear, replace, y removeLast. Se puede pasar un manejador opaco data al que se puede acceder desde las funciones de operación. La propiedad de lista sigue siendo válida mientras exista el object propietario de la propiedad de lista.
Se pueden pasar punteros nulos para cualquier función, haciendo que la función respectiva se sintetice utilizando las otras, si es posible. QQmlListProperty puede sintetizar
- clear usando count y removeLast
- replace usando count, at, clear, y append
- replace usando count, at, removeLast, y append
- removeLast utilizando count, at, clear, y append
si se proporcionan. Esto es lento, pero si su lista no proporciona de forma nativa opciones más rápidas para estas primitivas, es posible que desee utilizar las sintetizadas.
Además, si cualquiera de count, at, append, y clear no son dadas explícitamente o sintetizadas, la lista no será ni diseñable ni alterable por el depurador. Se recomienda proporcionar suficientes punteros válidos para evitar esta situación.
bool QQmlListProperty::operator==(const QQmlListProperty<T> &other) const
Devuelve true si este QQmlListProperty es igual a other, en caso contrario false.
Documentación de la variable miembro
void *QQmlListProperty::data
Este campo puede contener un puntero de datos arbitrario
Si implementas manualmente los métodos de acceso y necesitas almacenar datos personalizados, puedes pasar un puntero arbitrario al constructor de QQmlListProperty y recuperarlo del campo de datos cuando accedas al mismo QQmlListProperty más tarde.
Un QQmlListProperty constructed from a QList pointer utiliza este campo para almacenar el puntero a la propia lista, ya que no puede acceder directamente al contenido de la lista desde el propietario.
QObject *QQmlListProperty::object
Este campo contiene el propietario de la QQmlListProperty
Cuando implemente manualmente los métodos de acceso, puede que necesite utilizar este campo para recuperar el contenido de la lista manipulada.
Documentación de macros
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND
Esta macro define el comportamiento de las propiedades de lista de esta clase a Append. Cuando se asigna la propiedad en un tipo derivado, los valores se anexan a los de la clase base. Este es el comportamiento por defecto.
class FruitBasket : QObject { Q_OBJECT QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit) public: // ... QQmlListProperty<Fruit> fruit(); // ... };
Véase también QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE, y Definición de tipos de objeto mediante documentos QML.
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE
Esta macro define el comportamiento de las propiedades de lista de esta clase a Reemplazar. Cuando se asigna la propiedad en un tipo derivado, los valores reemplazan a los de la clase base.
class FruitBasket : QObject { Q_OBJECT QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit) public: // ... QQmlListProperty<Fruit> fruit(); // ... };
Véase también QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT, y Definición de tipos de objeto mediante documentos QML.
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT
Esta macro define el comportamiento de las propiedades de lista de esta clase a ReplaceIfNotDefault. Cuando se asigna la propiedad en un tipo derivado, los valores reemplazan a los de la clase base a menos que sea la propiedad por defecto. En el caso de la propiedad por defecto, los valores se añaden a los de la clase base.
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(); // ... };
Véase también QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND, QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE, y Definición de tipos de objeto mediante documentos QML.
© 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.