Connecting QTableView selectionChanged signal produces segfault with PyQt
Asked Answered
D

2

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?

Dubose answered 10/2, 2013 at 22:26 Comment(1)
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?Elonore
D
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.

Dubose answered 11/2, 2013 at 21:3 Comment(0)
S
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.

Scapular answered 1/11, 2014 at 12:42 Comment(0)
D
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.

Dubose answered 11/2, 2013 at 21:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.