comment fabriquer une cellule dans un QTableWidget en lecture seule?
j'ai le code suivant la définition de l'interface de mon application
class Ui (object):
def setupUi():
self.tableName = QtGui.QTableWidget(self.layoutWidget_20)
self.tableName.setObjectName(_fromUtf8("twHistoricoDisciplinas"))
self.tableName.setColumnCount(4)
self.tableName.setRowCount(3)
et le code suivant dans mon application
class MainWindow(QtGui.QMainWindow):
def __init__(self):
self.ui = Ui()
self.ui.setupUi(self)
self.createtable()
#creating a tw cell
def cell(self,var=""):
item = QtGui.QTableWidgetItem()
item.setText(var)
return item
def createtable(self):
rows = self.tableName.rowCount()
columns = self.tableName.columnCount()
for i in range(rows):
for j in range(columns):
item = self.cell("text")
self.ui.tableName.setItem(i, j, item)
Je veux être en mesure d'ajouter de nouvelles lignes et de colonnes et de les éditer mais je veux verrouiller certaines cellules. ( j'ai déjà le code pour accroître la table )
comment puis-je faire quelques cellules en lecture seule, tout en conservant les autres en lecture et en écriture?
j'ai trouvé ce lien Comment faire une colonne dans QTableWidget en lecture seule? avec une solution pour le problème en C++, python solution similaire ?
EDIT: suppression de la réponse de la poste et collé comme une réponse
Il y a généralement très peu de différences entre le c++ et le python code avec Qt. Vous avez juste à ajuster la syntaxe et ce morceau de code fonctionne comme un charme.
vraiment fait un travail comme un charme :), j'ai juste besoin de trouver l'endroit où ont été déclarées, les drapeaux, les im python et qt, il faut un certain temps pour s'y habituer
vraiment fait un travail comme un charme :), j'ai juste besoin de trouver l'endroit où ont été déclarées, les drapeaux, les im python et qt, il faut un certain temps pour s'y habituer
OriginalL'auteur Rafael Rotelok | 2011-10-11
Vous devez vous connecter pour publier un commentaire.
J'ai joué un peu avec le code et lire un peu plus de la documentation
la réponse au problème est
La solution est la ligne ".setFlags(QtCore.Qt.ItemIsEnabled)", vous pouvez l'utiliser pour définir la propriété de la cellule QtCore.Qt.ItemIsEnabled désactivé, de sorte que vous ne pouvez pas sélectionner ou modifier la cellule
Vous pouvez modifier un certain nombre d'autres propriétés de cette façon, au moment de l'exécution que par documentarion sur http://doc.qt.io/archives/qt-4.8/qt.html en vertu de la section Qt::ItemFlag
comme mentionné dans un commentaire de Sven sur la deuxième réponse à cette question, si vous avez le même nombre de lignes et de colonnes dans votre QTableWidgetItem vous pouvez sélectionner les propriétés des cellules avec Qtdesigner si vous l'utilisez pour créer des écrans de votre application
OriginalL'auteur Rafael Rotelok
Le statut d'édition d'un QTableWidgetItem n'est jamais entré quand il n'y a pas de Modifier des Déclencheurs:
self.tableName.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
Mais que faire si je veux avoir la possibilité de copier mais pas de le modifier?
Vous pouvez toujours cliquer sur les cellules pour les marquer, puis appuyez sur "Ctrl + C". Le contenu de la cellule sera mis dans le presse-papiers.
OriginalL'auteur Sven Krüger
Comme Sven Krüger du réponse, vous pouvez également utiliser ces méthodes pour PyQt5:
OriginalL'auteur ozcanyarimdunya