2013-02-10 10 views
6

Ho un QTableView in un'applicazione PyQt e voglio tenere traccia di quando cambia la selezione. Ho provato a collegare il segnale di una fessura come segue (utilizzando i consigli su this page:Connessione QTableView selectionChanged signal produce segfault con PyQt

self.view.selectionModel().selectionChanged.connect(self.selChanged) 

cui la fessura è collegato a è definito come:

def selChanged(self, selected, deselected): 
     print "Sel changed" 

Tuttavia, ogni volta che carico il QMainWindow su cui risiede il QTableView, ottengo un segmentation fault immediato.

sto facendo qualcosa di sciocco qui?

+0

Non c'è niente di chiaramente sbagliato nel codice che mostri. Forse il problema è da qualche altra parte? Puoi pubblicare un esempio completo con il problema? – Avaris

risposta

2

Questo è stato risolto ora, si è scoperto che stavo usando una vecchia versione di Qt su quella macchina - che sembrava causare l'incidente.

La morale della storia è: se il tuo codice si blocca per nessun motivo ragionevole, controlla tutte le tue dipendenze (in questo caso Qt e PyQt) sono aggiornate.

4

ho avuto un problema simile e la correzione è stata qui: PySide: Segfault(?) when using QItemSelectionModel with QListView

Vale a dire, sostituire:

self.view.selectionModel().selectionChanged.connect(self.selChanged) 

con due comandi:

selectionModel = self.view.selectionModel() 
selectionModel.selectionChanged.connect(self.selChanged) 

Non capisco perché questo funziona, francamente.

Problemi correlati