PySide6. Исчезают данные из строки в БД, после заполнения ячейки из списка QComboBox

Начинающий программист просит помощи. Нужно в БД в 4й столбец заносить значения из QComboBox (из list). Сейчас, в ячейках указанного столбца, я могу видеть список, выбирать из него значение и видеть в ячейке БД свой выбор. Но как только я перехожу на другую строчку/столбец/ячейку - все данные на заполненной строке исчезают. Так происходит в каждой заполняемой из QComboBox строке. Прошу объяснить, а лучше показать как мне это исправить. Прошу учесть, что я только начиню разбираться. На картинке состояние после "заполнения" 4го столбца('Профиль/Метиз')

картинка из создаваемого интерфейса. Панель QTableView

class DB_support:

def create_connection(self, DBpath=None, DBfilename=None):
    os.makedirs(DBpath, exist_ok=True)
    __db = QSqlDatabase.addDatabase('QSQLITE')
    __db.setDatabaseName(DBpath + r'\\' + DBfilename + '.db')
    if not __db.open():
        x = [False, "база не подключилась"]
        sys.exit(1)
    else:
        x = [True, "база подключилась"]
    self.DBname = str(DBfilename + '.db')
    return

def setDBmodelToWorking(self, DBname):
    model = QSqlTableModel(None)
    model.setTable(DBname)
    return model

def Show_baseView_DBtab(self, DBmodel):
    DBmodel.select()
    DBmodel.setHeaderData(0, Qt.Horizontal, 'Наименование проекта')
    DBmodel.setHeaderData(1, Qt.Horizontal, 'Марка')
    DBmodel.setHeaderData(2, Qt.Horizontal, 'Позиция')
    DBmodel.setHeaderData(3, Qt.Horizontal, 'Профиль/Метиз')
    DBmodel.setHeaderData(4, Qt.Horizontal, 'Параметр "А"')
    DBmodel.setHeaderData(5, Qt.Horizontal, 'Параметр "Б"')
    DBmodel.setHeaderData(6, Qt.Horizontal, 'Длина')
    DBmodel.removeColumn(0) # скрыть колонку с ID(№0)

class ComboBoxDelegate(QStyledItemDelegate):

def __init__(self, parent=None):
    super().__init__(parent)
    self.datas_comboList = ["First", "Second", "Third"]

def createEditor(self, parent, option, index):
    comboBox = QComboBox(parent)
    comboBox.addItems(self.datas_comboList)
    comboBox.setEditable(False)
    return comboBox

def setEditorData(self, editor, index):
    text = index.model().data(index, Qt.DisplayRole)
    idx = editor.findText(str(text))
    if idx >= 0:
        editor.setCurrentIndex(idx)

def setModelData(self, editor, model, index):
    model.setData(index, editor.currentText(), Qt.EditRole)
    print(editor.currentText()) # 'editor.currentText()' окончательное значение из combobox
    model.dataChanged.connect(model.submitAll)

class MainWindow(QMainWindow): # класс из файла UI

def __init__(self):
    super(MainWindow, self).__init__()
    self.ui = Ui_MainWindow()  # класс из файла UI
    self.ui.setupUi(self)

    self.obj = Supp_exel()
    self.conDB =DB_support()

    # -----------модель DB
    self.conDB.create_connection(r'E:\Documents\all Works\PROG\DBs', 'proba')
    self.modelDB = self.conDB.setDBmodelToWorking('MetallSpec') # 'экземпляр модели DB
    # -----------модель DB

    # -----------------представления Таблиц
    self.ui.qtv_DB_MetallSpec.setModel(self.modelDB) # Устанавливаем модель данных для главной панели таблицы
    self.conDB.Show_baseView_DBtab(self.modelDB)        
    # -----------------представления Таблиц

    # ---------------------Установка ComboBoxDelegate в столбец модели
    self.setComboboxDatas()

def setComboboxDatas(self, columnIndex=3):
    delegate = ComboBoxDelegate()
    self.ui.qtv_DB_MetallSpec.setItemDelegateForColumn(columnIndex, delegate)
    self.modelDB.submitAll()

Ответы (0 шт):