Второй addMapping()
не может работать.Второй addMapping() не может работать с использованием QDataWidgetMapper
Второй QLineEdit
не может получить данные. как выставка изображения:
Это весь код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import (QWidget, QLabel, QDataWidgetMapper,
QLineEdit, QApplication, QGridLayout)
from PyQt5.QtCore import QAbstractListModel, Qt
from PyQt5.QtWidgets import QListView
class Window(QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
# Set up the widgets.
self.nameEdit = QLineEdit()
self.nameEdit2 = QLineEdit()
layout = QGridLayout()
layout.addWidget(self.nameEdit, 0, 1, 1, 1)
layout.addWidget(self.nameEdit2, 0, 2, 1, 1)
self.setLayout(layout)
def setModel(self, model):
# Set up the mapper.
self.mapper = QDataWidgetMapper(self)
self.mapper.setModel(model)
self.mapper.addMapping(self.nameEdit, 0)
self.mapper.addMapping(self.nameEdit2, 1)
self.mapper.toFirst()
class MyModel(QAbstractListModel):
def __init__(self, data=[], parent=None):
# super().__init__(parent)
super(MyModel, self).__init__(parent)
self.__data = data
def rowCount(self, index_parent=None, *args, **kwargs):
return len(self.__data)
def data(self, index, role=Qt.DisplayRole, parent=None):
if not index.isValid():
return None
if index.row() > len(self.__data):
return None
if role == Qt.DisplayRole or role == Qt.EditRole:
return self.__data[index.row()][index.column()]
return None
def flags(self, index):
flags = super(MyModel, self).flags(index)
if index.isValid():
flags |= Qt.ItemIsEditable
flags |= Qt.ItemIsDragEnabled
else:
flags = Qt.ItemIsDropEnabled
return flags
def setData(self, index, value, role=Qt.EditRole):
if not index.isValid() or role != Qt.EditRole:
return False
self.__data[index.row()][index.column()] = value
self.dataChanged.emit(index, index)
return True
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
myModel = MyModel([['line 1', 'line1 col2'],
['line 2', 'line2 col2'],
['line 3', 'line3 col2'],
['line 4', 'line4 col2']])
mywindow = Window()
mywindow.setModel(myModel)
qlistview2 = QListView()
qlistview2.setModel(myModel)
mywindow.show()
qlistview2.show()
sys.exit(app.exec_())