2010-12-01 17 views
7

Ich verwende PyQt, um eine GUI-Anwendung zu erstellen. In einer von QTableView geerbten Ansicht müssen Sie die Zeile erkennen, die der Benutzer beim Doppelklicken auf eine Zeile ausgewählt hat. Die Tabelle hat eine Sortierung, aber keine Bearbeitung.So erkennen Sie DoubleClick in QTableView

Wie mache ich das?

Hinweis - versuchte das DoubleClicked (int) -Signal. Es wird von Maustasten ausgegeben, nicht von Datenzellen, daher wurde es nie ausgelöst. :(

Ian

Antwort

14

Ich verstehe nicht. Das doubleClicked Signal des QTableView die Signatur hat

void doubleClicked (const QModelIndex & index) 

Wenn Sie dieses Signal anschließen sollten Sie die richtige QModelIndex erhalten.

+0

I sowohl self.connect versucht (self.tableView, SIGNAL ("doubleClicked()"), self.dblClickHandler) und self.connect (self.tableView, SIGNAL ("doubleClicked (int)"), self.dblClickHandler) - aus Beispielen von clicked. Auch versucht, angeklickt() und mouseDoubleClickEvent(). Keine wurden ausgelöst – Ian

+0

Ich habe nie versucht, die Python-Bindungen, aber Sie könnten versuchen self.connect (self.tableView, SIGNAL ("doubleClicked (const QModelIndex &)"), – Haplo

+0

Wenn const Typ & ist eine Adresse (ich don Ich kenne C++ gut), dann ist das die DoubleClicked (int) Version. – Ian

3

Keine Notwendigkeit SIGNALs mehr zu verwenden:

self.your_table.doubleClicked.connect(your_function) 

"doubleClicked" wird von QAbstractItemView geerbt.

+0

Ich weiß, dass dieser Thread ein bisschen alt ist, aber wie ich etwas Ähnliches mache, wie gehe ich über den Wert innerhalb einer bestimmten Zelle, die ich doppelt habe - darauf geklickt? – dissidia

3

Sobald Sie den ModelIndex haben (aus Franks Kommentar oben), können Sie damit herausfinden, auf welche Zelle doppelgeklickt wurde.

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

Sie dann mit table.setItem diese Zeile und Spalte Werte verwenden können, um auf die Tabelle zugreifen (Zeile, Spalte newdata) oder andere Tabellenmethode