python - PySide:将 QItemSelectionModel 与 QListView 一起使用时出现段错误(?)

标签 python qt crash segmentation-fault pyside

与此完全相同的问题: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)。

谁能帮我解决这个问题?

最佳答案

尝试在选择模型的生命周期内保留对选择模型的引用。这对我有类似的问题(连接到 TableView 选择模型上的 currentChanged 事件时出现段错误)。

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)

出于某种原因,最后两行有效,而将它们组合成一个命令会引发错误。

关于python - PySide:将 QItemSelectionModel 与 QListView 一起使用时出现段错误(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19211430/

相关文章:

ios - 来自 Apple App Store 的 EXC_BREAKPOINT (SIGTRAP) 崩溃报告。

python - Bluez/Python 缓冲导致蓝牙连接延迟

Python 数组按单词过滤

c++ - 如何观看多个QFuture?

qt - 无法使用 QML MediaPlayer 循环播放视频

caching - imageWithCGImage 没有被释放或者被类似于 imageNamed 的缓存捕获,有什么方法可以生成动态图像吗?

ios - iOS崩溃追随者

python - Python 2 和 Python 3 中不同类型的内部类

python - Jinja PackageLoader 在 Python 3 上引发 "unregistered loader type"

c++ - 二进制文件格式与基于文本的格式文件大小