我正面临一个让我发疯的问题。也许这很容易,但我看不到罪魁祸首。
我有一个简单的类,它将 QListWidget 的 currentItemChanged 信号连接到同一类的自定义插槽。这个信号有一个 (QListWidgetItem*, QListWidgetItem*) 签名(没有重载的同名信号)。Slot只有一个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'>
- 这完全没问题,所以收到的“项目”又是一个 QListWidgetItem。数据方法调用似乎适合我 - 有人知道吗?