PySide 在 QAbstractItemModel 子类中发出 dataChanged 信号时出错
PySide Error emitting dataChanged signal in QAbstractItemModel subclass
我在尝试发出 dataChanged
信号时遇到此错误:
self.dataChanged.emit(index, index)
TypeError: Value types used on meta functions (including signals) need to be registered on meta type: QModelIndex
这是我的 QAbstractItemModel
子类的相关部分:
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、包)。
使用自制软件进行全新安装解决了这个问题。
我在尝试发出 dataChanged
信号时遇到此错误:
self.dataChanged.emit(index, index)
TypeError: Value types used on meta functions (including signals) need to be registered on meta type: QModelIndex
这是我的 QAbstractItemModel
子类的相关部分:
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、包)。
使用自制软件进行全新安装解决了这个问题。