2017-02-13 7 views
1

Ich versuche, ein QtGui.QPlainTextEdit mit einem Modell mit QDataWidgetMapper zu verbinden. Ich bekomme keine Fehler, nur nichts im TextEdit. Ich bekomme es nicht und ich finde kein gutes Beispiel Code.PySide PyQt QDataWidgetMapper

Hier ist ein BeispielCode. Ich hoffe wirklich, dass mir jemand helfen könnte.

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_()) 
+0

in Ihrer 'data' Funktion in' ComponentsListModel' Klasse hinzuzufügen, versuchen 'wenn Rolle hinzufügen == Qt .EditRole: return self.components [Zeile] ' – SyedElec

+0

Funktioniert wie Charme, danke –

+0

Ich bin froh, dass es geholfen hat, habe ich eine Antwort. – SyedElec

Antwort

2

Sie müssen eine Bedingung für Qt.EditRole in Ihren Daten Funktion innerhalb ComponentsListModel Klasse

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