|
|
|
|
@ -76,11 +76,31 @@ class VarTableModel(QAbstractTableModel):
|
|
|
|
|
def insert_data(self, x, index):
|
|
|
|
|
self.datas.insert(index, x)
|
|
|
|
|
self.checkList = ['Unchecked'] * len(self.datas)
|
|
|
|
|
# 更新 editableList:插入行会导致索引 >= index 的值后移 1
|
|
|
|
|
new_editable = []
|
|
|
|
|
for r in self.editableList:
|
|
|
|
|
if r >= index:
|
|
|
|
|
new_editable.append(r + 1)
|
|
|
|
|
else:
|
|
|
|
|
new_editable.append(r)
|
|
|
|
|
self.editableList = new_editable
|
|
|
|
|
self.table.proxy.invalidate()
|
|
|
|
|
|
|
|
|
|
def remove_row(self, row):
|
|
|
|
|
self.datas.pop(row)
|
|
|
|
|
self.checkList = ['UnChecked'] * len(self.datas)
|
|
|
|
|
# 规范 checkList 的值,保持与其它地方一致的 'Unchecked'
|
|
|
|
|
self.checkList = ['Unchecked'] * len(self.datas)
|
|
|
|
|
# 更新 editableList:移除被删行,并将大于该行的索引减一
|
|
|
|
|
new_editable = []
|
|
|
|
|
for r in self.editableList:
|
|
|
|
|
if r == row:
|
|
|
|
|
# 被删除行,从 editableList 中移除
|
|
|
|
|
continue
|
|
|
|
|
elif r > row:
|
|
|
|
|
new_editable.append(r - 1)
|
|
|
|
|
else:
|
|
|
|
|
new_editable.append(r)
|
|
|
|
|
self.editableList = new_editable
|
|
|
|
|
self.table.proxy.invalidate()
|
|
|
|
|
|
|
|
|
|
def rowCount(self, parent: QModelIndex = ...) -> int:
|
|
|
|
|
@ -414,14 +434,16 @@ class ModbusButtonDelegate(BaseButtonDelegate):
|
|
|
|
|
fucationCbRow = str('cb' + str(source_row) + str(5))
|
|
|
|
|
fucationIndex = self.parent().model.index(source_row, 5)
|
|
|
|
|
fucationDelegate = self.parent().itemDelegate(fucationIndex)
|
|
|
|
|
fucationCheckbox = getattr(fucationDelegate, fucationCbRow)
|
|
|
|
|
# getattr 可能返回 None,使用默认值避免 AttributeError
|
|
|
|
|
fucationCheckbox = getattr(fucationDelegate, fucationCbRow, None)
|
|
|
|
|
|
|
|
|
|
if sender.isEdit:
|
|
|
|
|
sender.setIcon(qtawesome.icon('fa.save', color='#1fbb6f'))
|
|
|
|
|
sender.isEdit = False
|
|
|
|
|
sender.oldName = model.datas[source_row][3]
|
|
|
|
|
model.editableList.append(source_row)
|
|
|
|
|
fucationCheckbox.setEnabled(True)
|
|
|
|
|
if fucationCheckbox:
|
|
|
|
|
fucationCheckbox.setEnabled(True)
|
|
|
|
|
self.parent().viewport().update()
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
@ -508,9 +530,12 @@ class ModbusButtonDelegate(BaseButtonDelegate):
|
|
|
|
|
model.remove_row(source_row + 1)
|
|
|
|
|
|
|
|
|
|
sender.isEdit = True
|
|
|
|
|
fucationCheckbox.setEnabled(False)
|
|
|
|
|
if fucationCheckbox:
|
|
|
|
|
fucationCheckbox.setEnabled(False)
|
|
|
|
|
# varModelCheckbox.setEnabled(False)
|
|
|
|
|
model.editableList.remove(source_row)
|
|
|
|
|
# 有可能在删除/其他操作后该索引已不存在,先检查再移除
|
|
|
|
|
if source_row in model.editableList:
|
|
|
|
|
model.editableList.remove(source_row)
|
|
|
|
|
self.parent().viewport().update()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|