Седя пред проблем, който ме побърква. Може би е лесно, но не виждам виновника.
Имам прост клас, който свързва сигнала 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. Извикването на метода за данни изглежда подходящо за мен - някой има ли идея?