2017-02-13 43 views
1

Я пытаюсь подключить QtGui.QPlainTextEdit к модели с QDataWidgetMapper. Я не получаю никаких ошибок, только ничего в TextEdit. Я не понимаю, и я не могу найти хороший пример кода.PySide PyQt QDataWidgetMapper

Вот пример ExampleCode. Я действительно надеюсь, что кто-то может мне помочь.

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

в вашем 'data' функции в' классе ComponentsListModel', попробуйте добавить 'если роль == Qt .EditRole: return self.components [row] ' – SyedElec

+0

Работает как шарм, спасибо –

+0

Я рад, что это помогло, я сделал ответ. – SyedElec

ответ

2

Вам нужно будет добавить условие для Qt.EditRole в функции данных внутри ComponentsListModel класса

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

 Смежные вопросы

  • Нет связанных вопросов^_^