私は気が狂うような問題の前に座っています。簡単かもしれませんが、犯人が見えません。
QListWidget の currentItemChanged シグナルを同じクラスのカスタム スロットに接続する単純なクラスがあります。このシグナルには (QListWidgetItem*, QListWidgetItem*) シグネチャがあります (同じ名前のオーバーロードされたシグナルはありません)。スロットは 1 つの QListWidgetItem のみですが、これは問題ありません。コード スニペットを参照してください。
class Overview(QObject):
def __init__(self, parent=None)
#---SNIP---
item = QListWidgetItem(spec.name)
item.setData(Qt.UserRole, spec)
self.ui.listWidget.currentItemChanged.connect(
self.showDetails(QListWidgetItem))
@Slot(QListWidgetItem)
def showDetails(self, item):
if item:
spec = item.data(Qt.UserRole) # <---- PROBLEM
このコードを実行すると、常にエラー メッセージが表示されます。
---SNIP---
spec = item.data(Qt.UserRole)
TypeError: descriptor 'data' requires a 'PySide.QtGui.QListWidgetItem' object
but received a 'PySide.QtCore.Qt.ItemDataRole'
私はすべてを試しましたが、ここで何が問題なのかわかりません。print(item)
スロットに aを入力する<class 'PySide.QtGui.QListWidgetItem'>
と、次のように表示されます。データメソッド呼び出しは私にとって正しいようです - 誰かアイデアがありますか?