Bonjour à tous,
Je tiens d'abord à vous remercier en vous disant que grâce à l'ensemble des posts (et surtout des réponses) dans ce forum, de nombreuses questions que je me posais ont été résolues sans que je prenne la peine de les poser. Donc merci à vous tous.
Voilà le problème qu'il se pose à moi et qui me fait me tourner vers vous aujourd'hui: je suis en train de faire une interface graphique pour un programme que j'ai développé. Ce programme traite des données de métrologie optique, et ce afin de suivre l'évolution de la gravure de composants microélectroniques en temps réels. Voilà pour le contexte.
Je vais mettre le code que je développe plus loin, laissez moi décrire d'abord mon problème.
La résolution de ce programme est différente selon la géométrie du composant, c'est pourquoi je demande à l'utilisateur de spécifier la géométrie utilisée pour la résolution du problème (via des checkbox). Chaque géométrie à des dimensions propres, que l'utilisateur peut spécifier via l'utilisation d'un QTableWidget.
Mon problème est le suivant : je veux que lorsque l'utilisateur choisi une géométrie donnée, les cellules du QTableWidget éditables soient uniquement celles correspondant à la géométrie, c'est à dire que lorsque je clique sur la check box correspondantes, toutes les dimensions non nécessaires soient non éditables. Ca, c'est bon, je sais le faire grace au QTableWidgetItem.setFlags(QtCore.Qt.ItemIsEditable).
Le problème que je rencontre est plutôt l'inverse. Je veux que lorsque je décoche la checkbox, toutes les cellules qui ont été desactivées se réactivent. Et la je bloque, j'ai bien essayé un ~QtCore.Qt.ItemIsEditable ou un QtCore.Qt.ItemNoFlags, rien n'y fait. Quelqu'un aurait une idée?
Voilà l'architecture du code me posant problème :
En espérant avoir été assez précis. N'hésitez pas à me demander si des questions persistent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 def __init__(self,parent=None): ## initialisation du tableau, Table est un QTableWidget ## self.Table.setRowCount(1) self.Table.setColumnCount(18) self.connectActions() def connectActions(self): self.RectangleGeom_CheckBox.clicked.connect(self.StateCell) ## RectangleGeom_CheckBox est une des checkbox permettant de choisir la géométrie du composant ## def StateCell(self): if(self.RectangleGeom_CheckBox.isChecked()): ## On desactive des cellules, ça ok, ça marche ## for j in [0,2,3,4,6]: ## coordonnées des cellules qui doivent être desactivées ## item=QtGui.QTableWidgetItem() item.setFlags(QtCore.Qt.ItemIsEditable) self.Table.setItem(0,j,item) else : ## dans le cas contraire, les cellules doivent être réactivées ## for j in [0,2,3,4,6]: item=QtGui.QTableWidgetItem() ## et là, je sais pas, ça fonctionne pas, des idées? ## item.setFlags(~QtCore.Qt.ItemIsEditable) self.Table.setItem(0,j,item)
Merci à vous !
Koamh
Partager