PySide在QAbstractItemModel子类中发出dataChanged信号的错误

时间:2015-08-12 14:20:30

标签: macos qt pyside qmodelindex

我在尝试发出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上运行。

1 个答案:

答案 0 :(得分:0)

实际上,这是由安装冲突引起的。我有不同风格的python(系统,brew,官方网站包)。

使用自制程序进行全新安装修复了该问题。