PySide Error emitting dataChanged signal in QAbstractItemModel subclass
我在尝试发出
1 2 | self.dataChanged.emit(index, index) TypeError: Value types used on meta functions (including signals) need to be registered on meta type: QModelIndex |
这是我的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class PropertyItemModel(QtCore.QAbstractItemModel): def __init__(self, parent=None): super(PropertyItemModel, self).__init__(parent) def setData(self, index, value, role=Qt.EditRole): if role != Qt.EditRole: return False item = self.getItem(index) result = item.setData(index.column(), value) if result: self.dataChanged.emit(index, index) # Doesn't work either (same error): # self.emit(QtCore.SIGNAL("dataChanged(QModelIndex, QModelIndex)"), index, index) # QtCore.QObject.emit(self, QtCore.SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), index, index) return result |
我在 Mac OS X (10.10) 上使用 PySide 1.2.1 版和 Qt 4.8.5。
该错误可能与我的特定环境有关。此代码在另一台 Mac 上运行。
确实,这是由安装冲突引起的。我有不同风格的python(系统,brew,来自官方网站的包)。
使用自制软件全新安装解决了这个问题。