1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#class TouteTableModel(QtCore.QAbstractTableModel):
# ...
# ... (ici simplement la fin de la classe (fonction flags(self, index)))
def flags(self, index):
fl = QtCore.QAbstractTableModel.flags(self, index)
#print("Dans flags: de base ", int(fl))
# donne 161, soit ItemIsTristate(128), ItemIsEnabled(32), ItemIsSelectable(1)
#print(int(QtCore.Qt.ItemIsEditable))
# donne 2
if self.noTbl==0: fl |= QtCore.Qt.ItemIsEditable # Bandes
if self.noTbl==1 and index.column()!=0: fl |= QtCore.Qt.ItemIsEditable # Cultures
if self.noTbl==2: fl |= QtCore.Qt.ItemIsEditable # Façons
if self.noTbl==3: fl |= QtCore.Qt.ItemIsEditable # docProd
if self.noTbl==4 and index.column()!=0: fl |= QtCore.Qt.ItemIsEditable #Actions
print("Dans flags: pour (",self.noTbl,",",index.column(),")=", int(fl))
# donne pour (4,0)=161, pour (4,1)=163, pour (4,2)=163, pour (4,3)=163, pour (4,4)=163
# attention: pas de confusion; ici les cinq colonnes de la table no 4
return fl
#return QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEditable|QtCore.Qt.ItemIsEnabled
"""
0 Qt.NoItemFlags It does not have any properties set.
1 Qt.ItemIsSelectable It can be selected.
2 Qt.ItemIsEditable It can be edited.
4 Qt.ItemIsDragEnabled It can be dragged.
8 Qt.ItemIsDropEnabled It can be used as a drop target.
16 Qt.ItemIsUserCheckable It can be checked or unchecked by the user.
32 Qt.ItemIsEnabled The user can interact with the item.
64 Qt.ItemIsAutoTristate The items state depends on the state of its children. (ed.: QTreeWidget)
128 Qt.ItemIsTristate This enum value is deprecated. Use instead.
256 Qt.ItemNeverHasChildren The item never has child items. (ed.: for optimization purposes only.)
512 Qt.ItemIsUserTristate The user can cycle through three separate states. (ed.: Qt 5.5.)
"""
class TouteTableDelegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index):
model= index.model()
if model.noTbl==4 and index.column()==2:
print("Dans createEditor ", model.noTbl, index.column())
combo = QtWidgets.QComboBox(parent)
combo.addItems(model.comboItems)
combo.currentIndexChanged.connect(self.onCurrentComboIndexChanged)
return combo
else: return QtWidgets.QStyledItemDelegate.createEditor(self, parent, option, index)
def onCurrentComboIndexChanged(self, ix):
print("Dans combo changed")
editor = self.sender()
self.commitData.emit(editor)
self.closeEditor.emit(editor, QtWidgets.QAbstractItemDelegate.NoHint)
def setEditorData(self, editor, index):
model= index.model()
if model.noTbl==4 and index.column()==2:
text = index.data(QtCore.Qt.EditRole)
print("Dans setEditorData ", text)
editor.setCurrentText(text)
else: QtWidgets.QStyledItemDelegate.setEditorData(self, editor, index);
def setModelData(self, editor, model, index):
model= index.model()
if model.noTbl==4 and index.column()==2:
text = editor.currentText()
print("Dans setEditorData ", text)
model.setData(index, text)
else: QtWidgets.QStyledItemDelegate.setModelData(self, editor, model, index);
def paint(self, painter, option, index):
if isinstance(self.parent(), QtWidgets.QAbstractItemView):
self.parent().openPersistentEditor(index)
QtWidgets.QStyledItemDelegate.paint(self, painter, option, index) |
Partager