8

PyQtアプリケーションにQTableViewがあり、選択がいつ変更されるかを追跡したいと思います。私は次のように信号をスロットに接続しようとしました(このページのアドバイスを使用して:

self.view.selectionModel().selectionChanged.connect(self.selChanged)

接続先のスロットは次のように定義されます。

def selChanged(self, selected, deselected):
        print "Sel changed"

ただし、QTableViewが存在するQMainWindowをロードすると、すぐにセグメンテーション違反が発生します。

私はここで愚かなことをしていますか?

4

2 に答える 2

9

私は同様の問題を抱えていましたが、修正はここにありました: QListViewでQItemSelectionModelを使用するときのPySide:Segfault(?)

つまり、次を置き換えます。

self.view.selectionModel().selectionChanged.connect(self.selChanged)

2つのコマンドで:

selectionModel = self.view.selectionModel()
selectionModel.selectionChanged.connect(self.selChanged)

率直に言って、なぜこれが機能するのかわかりません。

于 2014-11-01T12:42:04.497 に答える
2

これは現在修正されており、そのマシンで古いバージョンのQtを使用していたことが判明しました。これにより、クラッシュが発生したようです。

話の教訓は、コードが理にかなった理由もなくクラッシュしている場合は、すべての依存関係(この場合はQtとPyQt)が最新であることを確認することです。

于 2013-02-11T21:03:00.633 に答える