9

これとまったく同じ問題: QTableView selectionChanged シグナルを接続すると、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 からの「アプリ名が機能しなくなった」というメッセージが表示されます。私はそれがセグメンテーション違反だと確信しています。

しかし、PyQt4 を使用すると正常に動作します。LGPLなので、PySideを使用しています。

はい、すべての最新バージョンを使用しています (PySide: 1.2.1、Python 2.7.5、Qt 4.8.5)。

誰でもこれで私を助けることができますか?

4

2 に答える 2

3

ここでも同じ問題: 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!
于 2015-11-20T15:44:29.007 に答える