PySide:Segfault(?)在QListVi中使用QItemSelectionModel时

2024-09-29 21:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

与此完全相同的问题:Connecting QTableView selectionChanged signal produces segfault with PyQt

我有一个QListView,我想在选择一个项目时调用一个函数:

self.server_list = QtGui.QListView(self.main_widget)
self.server_list_model = QtGui.QStandardItemModel()
self.server_list.setModel(self.server_list_model)
self.server_list.selectionModel().selectionChanged.connect(self.server_changed)

但是,当它到达最后一行时,我使用的是选择模型,应用程序崩溃了。不是通过回溯,而是通过Windows上的“appname has stopped working”。我敢肯定那是个错误。在

但是,当我使用PyQt4时,它工作得很好。我使用PySide是因为它是LGPL。在

是的,我是最新版本的everything(PySide:1.2.1,Python2.7.5,Qt4.8.5)。在

有人能帮我吗?在


Tags: selfsignalmodelserverwithpyqtlistpyside
2条回答

同样的问题:http://permalink.gmane.org/gmane.comp.lib.qt.pyside.devel/541

我也回答:http://permalink.gmane.org/gmane.comp.lib.qt.pyside.devel/542

我怀疑发生的是:

self.server_list # local object
.selectionModel() # call C++ method, wraps C++ object in Python object
.selectionChanged # get property of object
# selection model is now out of scope and gets garbage collected
.connect(...) # OOPS! ...operating on object that no longer exists!

尝试在选择模型的生命周期内保持对选择模型的引用。我也遇到了类似的问题(当连接到表视图选择模型上的currentChanged事件时出现seg错误)。在

self.server_list = QtGui.QListView(self.main_widget)
self.server_list_model = QtGui.QStandardItemModel()
self.server_list.setModel(self.server_list_model)
self.server_list_selection_model = self.server_list.selectionModel() # workaround
self.server_list_selection_model.selectionChanged.connect(self.server_changed)

由于某些原因,最后两行是有效的,而将它们组合成一个命令会抛出一个错误。在

相关问题 更多 >

    热门问题