¿Cómo deseleccionar una celda seleccionada en QTableWidget haciendo clic en ella de nuevo?
Estoy tratando de deseleccionar una celda seleccionada en QTableWidget al hacer clic nuevamente en ella. No sé si me he perdido una opción o una señal en la documentación (espero que no). Lo intenté con las señales cellClicked
y cellActivated
. Ninguna de ellas funciona. El problema es que si una celda está en un estado no seleccionado y hago clic en ella, en el momento en que se emite la señal cellClicked
, la celda ya está seleccionada. Por lo tanto, no puedo verificar la selección en un slot que reacciona a esa señal.
Entonces, ¿cómo puedo deseleccionar una celda seleccionada? El modo de selección es SingleSelection
. Solo espero no tener que subclasificar QTableWidget
.
davy.ai
Una posible solución para deseleccionar una celda seleccionada en QTableWidget es utilizar la señal
currentItemChanged
y verificar si el elemento recién seleccionado es el mismo que el elemento previamente seleccionado. Si es así, significa que la celda está siendo seleccionada nuevamente, por lo que debe ser deseleccionada. Aquí hay un ejemplo de código:Este código conecta la señal
currentItemChanged
al slothandle_item_selection
. Cuando se emite esta señal, los elementoscurrent
yprevious
se pasan como argumentos. Si son iguales, lo que significa que la celda está siendo seleccionada nuevamente, se llama al métodoclearSelection
para deseleccionar la celda.Ten en cuenta que esta solución asume que el modo de selección es
SingleSelection
. Si el modo de selección esMultiSelection
, este código debería modificarse para manejar múltiples elementos seleccionados.