Я сижу перед проблемой, которая сводит меня с ума. Может быть, это легко, но я не вижу виновника.
У меня есть простой класс, который соединяет сигнал currentItemChanged QListWidget с пользовательским слотом того же класса. Этот сигнал имеет сигнатуру (QListWidgetItem*, QListWidgetItem*) (нет перегруженных сигналов с таким именем). В слоте только один 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)
в слоте, он говорит: <class 'PySide.QtGui.QListWidgetItem'>
- это совершенно нормально, поэтому полученный «элемент» снова является QListWidgetItem. Вызов метода данных кажется мне правильным - есть у кого-нибудь идея?