Model view controller PySide PyQt QDataWidgetMapper

Model view controller PySide PyQt QDataWidgetMapper,model-view-controller,pyqt,pyside,Model View Controller,Pyqt,Pyside,我尝试使用QDataWidgetMapper将QtGui.QPlainTextEdit连接到模型。 我没有收到任何错误,只是文本编辑中没有任何错误。 我不明白,也找不到好的示例代码 下面是一些示例代码。 我真的希望有人能帮助我 from PySide import QtCore, QtGui import sys class ComponentsListModel(QtCore.QAbstractListModel): def __init__(self, components=[]

我尝试使用QDataWidgetMapper将QtGui.QPlainTextEdit连接到模型。 我没有收到任何错误,只是文本编辑中没有任何错误。 我不明白,也找不到好的示例代码

下面是一些示例代码。 我真的希望有人能帮助我

from PySide import QtCore, QtGui
import sys


class ComponentsListModel(QtCore.QAbstractListModel):
    def __init__(self, components=[], parent = None):
        super(ComponentsListModel, self).__init__(parent=None)
        self.components = components
        self.list = parent

    def rowCount(self, parent):
        return len(self.components)

    def data(self, index, role):
        row = index.row()

        if role == QtCore.Qt.DisplayRole:#index.isValid() and
            value = self.components[row]
            return value



class MainWindow(QtGui.QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self._build_ui()

    def _build_ui(self):
        self.layout = QtGui.QVBoxLayout()

        self.listView = QtGui.QListView()
        self.model = ComponentsListModel(components = ['1', '2', '3'])
        self.listView.setModel(self.model)
        self.text = QtGui.QPlainTextEdit()
        self.layout.addWidget(self.listView)
        self.layout.addWidget(self.text)
        self.setLayout(self.layout)

        self._mapper = QtGui.QDataWidgetMapper(self)
        self._mapper.setModel(self.model)
        self._mapper.setSubmitPolicy(QtGui.QDataWidgetMapper.AutoSubmit)
        self._mapper.addMapping(self.text, 0)
        self._mapper.toFirst()


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    app.setStyle('Plastique')
    mySW = MainWindow()
    mySW.show()
    sys.exit(app.exec_())

您需要在
ComponentsListModel
类中的数据函数中为
Qt.EditRole
添加一个条件

if role == Qt.EditRole: 
        value = self.components[row]
        return value

ComponentsListModel
类中的
data
函数中,尝试添加
if-role==Qt.EditRole:return self.components[row]
效果很好,谢谢我很高兴它有帮助,我给出了答案。