SelectionRectangle QML Type
Se utiliza para seleccionar celdas de tabla dentro de un TableView. Más...
| Import Statement: | import QtQuick.Controls |
| Since: | Qt 6.2 |
| Inherits: |
Propiedades
- active : bool
- bottomRightHandle : Component
- dragging : bool
- selectionMode : enumeration
- target : Item
- topLeftHandle : Component
Propiedades anexas
Descripción detallada

SelectionRectangle se utiliza para seleccionar celdas de una tabla en TableView. Permite al usuario iniciar una selección arrastrando el puntero dentro de la ventana gráfica o realizando una pulsación larga sobre una celda.
Para que un SelectionRectangle pueda seleccionar celdas, TableView debe tener asignado un ItemSelectionModel. El ItemSelectionModel almacenará cualquier selección realizada en el modelo, y puede ser utilizado para consultar qué celdas ha seleccionado el usuario.
El siguiente ejemplo muestra cómo puede hacer que un SelectionRectangle tenga como objetivo un TableView:
TableView { id: tableView anchors.fill: parent clip: true acceptedButtons: Qt.NoButton // mouse-drag changes selection model: TableModel { TableModelColumn { display: "name" } TableModelColumn { display: "age" } rows: [ { "name": "Harry", "age": "11" }, { "name": "Hedwig", "age": "8" } ] } selectionModel: ItemSelectionModel { model: tableView.model } delegate: TableViewDelegate { padding: 2 } } SelectionRectangle { target: tableView }
Nota: Un SelectionRectangle no se muestra como parte de una selección. Sólo se utilizan los delegados (como topLeftHandle y bottomRightHandle). También debería considerar rendering the TableView delegate as selected.
Véase también TableView, TableView::selectionModel, y ItemSelectionModel.
Documentación de propiedades
active : bool [read-only]
Esta propiedad es true mientras el usuario realiza una selección. La selección estará activa desde el momento en que el usuario comience a seleccionar, y hasta que la selección sea eliminada de nuevo, por ejemplo al pulsar dentro de la ventana gráfica.
bottomRightHandle : Component
Esta propiedad contiene el delegado que se mostrará en el centro de la esquina superior izquierda del rectángulo de selección. Cuando se proporciona un manejador, el usuario puede arrastrarlo para ajustar la selección.
El manejador no se oculta por defecto cuando se elimina una selección. En su lugar, esto es responsabilidad del delegado, para abrirlo para animaciones personalizadas de desvanecimiento. La forma más fácil de asegurar que el manejador termine oculto, es simplemente enlazar visible al estado active de la propiedad SelectionRectangle:
SelectionRectangle { bottomRightHandle: Rectangle { width: 20 height: 20 visible: SelectionRectangle.control.active } }
Establezca esta propiedad en null si no desea que aparezca un tirador de selección en la parte inferior derecha.
Véase también topLeftHandle.
dragging : bool [read-only]
Esta propiedad es true siempre que el usuario esté haciendo un arrastre de puntero o un arrastre de asa para ajustar el rectángulo de selección.
selectionMode : enumeration
Esta propiedad indica cuándo debe comenzar una selección.
| Constante | Descripción |
|---|---|
SelectionRectangle.Drag | Una selección se iniciará arrastrando el puntero dentro de la ventana gráfica. |
SelectionRectangle.PressAndHold | Una selección se iniciará pulsando y manteniendo sobre una celda. |
SelectionRectangle.Auto | SelectionRectangle elegirá qué modo utilizar basándose en target y en el dispositivo de entrada utilizado. Esto normalmente significa Drag cuando se utiliza un ratón, y PressAndHold en una pantalla táctil. Sin embargo, Drag sólo se utilizará si no entra en conflicto con el desplazamiento. Una forma de evitar el conflicto es desactivar el gesto de desplazamiento con el ratón estableciendo acceptedButtons en Qt.NoButton. En ese caso, la rueda del ratón o el gesto de desplazamiento con el touchpad siguen funcionando, el gesto de desplazamiento con la pantalla táctil sigue funcionando y la selección con la pantalla táctil puede iniciarse pulsando y manteniendo pulsado. Otra forma es poner interactive en false, lo que desactiva completamente el desplazamiento y los gestos táctiles (quizás esto debería hacerse sólo temporalmente, en algún modo de la interfaz de usuario). Otra forma es colocar TableView dentro de ScrollView (donde el desplazamiento, por defecto, está desactivado para los eventos del ratón). |
El valor por defecto es Auto.
target : Item
Esta propiedad contiene el TableView sobre el que debe actuar el SelectionRectangle.
topLeftHandle : Component
Esta propiedad contiene el delegado que se mostrará en el centro de la esquina superior izquierda del rectángulo de selección. Cuando se proporciona un manejador, el usuario puede arrastrarlo para ajustar la selección.
El manejador no se oculta por defecto cuando se elimina una selección. En su lugar, esto es responsabilidad del delegado, para abrirlo para animaciones personalizadas de desvanecimiento. La forma más fácil de asegurar que el manejador termine oculto, es simplemente enlazar visible al estado active de la propiedad SelectionRectangle:
SelectionRectangle { topLeftHandle: Rectangle { width: 20 height: 20 visible: SelectionRectangle.control.active } }
Establezca esta propiedad en null si no desea que el manejador de selección aparezca en la parte superior izquierda.
Vea también bottomRightHandle.
Documentación de la propiedad Attached
SelectionRectangle.control : SelectionRectangle
Esta propiedad adjunta contiene el SelectionRectangle que gestiona la instancia de delegado. Se adjunta a cada instancia de manejador.
SelectionRectangle.dragging : bool
Esta propiedad adjunta será true si el usuario está arrastrando sobre el asa. Se adjunta a cada instancia de asa.
© 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.