Connecting QTableView selectionChanged signal produces segfault with PyQt

烈酒焚心 提交于 2019-12-19 06:21:15

问题


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?


回答1:


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.




回答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.



来源:https://stackoverflow.com/questions/14803315/connecting-qtableview-selectionchanged-signal-produces-segfault-with-pyqt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!