8

I have a QTableView in a PyQt application, and I want to keep track of when the selection changes. I've tried connecting the signal to a slot as follows (using the advice on this page:

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

where the slot it is connected to is defined as:

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

However, whenever I load the QMainWindow on which the QTableView resides, I get an immediate segmentation fault.

Am I doing something silly here?

robintw
  • 27,571
  • 51
  • 138
  • 205
  • There isn't anything obviously wrong in the code you show. Perhaps the issue is somewhere else? Can you post a full example with the issue? – Avaris Feb 10 '13 at 23:36

2 Answers2

9

I was having a similar problem and the fix was here: PySide: Segfault(?) when using QItemSelectionModel with QListView

Namely, replace:

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

with two commands:

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

Not sure why this works, frankly.

Community
  • 1
  • 1
eric
  • 7,142
  • 12
  • 72
  • 138
2

This has been fixed now, it turned out that I was using an old version of Qt on that machine - which seemed to cause the crash.

The moral of the story is: if your code is crashing for no sensible reason, check all of your dependencies (in this case Qt and PyQt) are up-to-date.

robintw
  • 27,571
  • 51
  • 138
  • 205