与此完全相同的问题: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已停止工作”。我很确定这是一个段错误。
但是,当我使用PyQt4时,它工作正常。我正在使用PySide,因为它是LGPL。
是的,我使用的是最新版本(PySide:1.2.1,Python 2.7.5,Qt 4.8.5)。
任何人都可以帮我吗?
答案 0 :(得分:13)
尝试在选择模型的生命周期内保留对选择模型的引用。这对我有类似的问题(在表视图选择模型上连接到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)
由于某种原因,最后两行有效,而将它们组合成一个命令会引发错误。
答案 1 :(得分:3)
此处的问题相同:http://permalink.gmane.org/gmane.comp.lib.qt.pyside.devel/541
我也回答:http://permalink.gmane.org/gmane.comp.lib.qt.pyside.devel/542
我怀疑会发生什么:
Intent intent = new Intent(this, nextActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);