2010-12-01 37 views
7

Estoy usando PyQt para crear una aplicación GUI. En una vista heredada de QTableView, necesita detectar la fila que el usuario ha seleccionado cuando hacen doble clic en una fila. La tabla tiene clasificación, pero no edición.Cómo detectar DoubleClick en QTableView

¿Cómo lo hago?

Nota - intentó la señal doubleClicked (int). Se emite con los botones del mouse, no con celdas de datos, por lo que nunca se activó. :(

Ian

Respuesta

14

No entiendo. La señal doubleclicked del QTableView tiene la firma

void doubleClicked (const QModelIndex & index) 

Si se conecta la señal de que se debe obtener el QModelIndex correcta.

+0

He intentado tanto self.connect (self.tableView, SEÑAL ("doubleClicked()"), self.dblClickHandler) y self.connect (self.tableView, SIGNAL ("doubleClicked (int)"), self.dblClickHandler) - a partir de ejemplos de clics. También intenté hacer clic en() y mouseDoubleClickEvent(). Ninguno se activó – Ian

+0

Nunca he intentado los enlaces de python, pero podría intentar self.connect (self.tableView, SIGNAL ("doubleClicked (const QModelIndex &)"), self.dblClickHandler) – Haplo

+0

Si const escribe & es una dirección (I don 'conozco C++ bien) entonces eso es lo que es la versión doubleClicked (int). – Ian

3

No hay necesidad para usar SIGNALs más:

self.your_table.doubleClicked.connect(your_function) 

"doubleClicked" se hereda de QAbstractItemView.

+0

Sé que este hilo es un poco viejo, pero como estoy haciendo algo similar, ¿cómo hago para obtener el valor dentro de una celda particular que tengo doble? -clicé en él? – dissidia

3

Una vez que tenga el modelIndex, (del comentario anterior de Frank), puede usarlo para encontrar la celda en la que se hizo doble clic.

def slotDoubleClicked(self, mi): 
    row = mi.row() 
    column = mi.column() 

A continuación, puede utilizar estos valores de fila y col acceder a la mesa con table.setItem (fila, columna, NewData) u otro método de la tabla

Cuestiones relacionadas