Comment puis-je dire à un QTableWidget pour mettre fin à la modification d'une cellule?

StackOverflow https://stackoverflow.com/questions/518447

  •  21-08-2019
  •  | 
  •  

Question

Je montre un menu contextuel pour sélectionner des valeurs dans un QTableWidget. Le plus bas article est une entrée « Modifier la liste », lorsque je sélectionne une nouvelle fenêtre devrait apparaître automatiquement et le QComboBox doit disparaître et le retour de la cellule à un état Qt :: DisplayRole.

Qt a toutes ces belles API des appels comme, QTableWidget.edit() et ce que je QTableWidget.editItem() suis vraiment pour est un QTableWidget.endEditing(), de préférence, sans préciser l'indice de la cellule, bien que je pouvais obtenir qu'en utilisant cette appel:

table.currentIndex()

... mais je ne sais pas si je peux vous garantir que la cellule actuelle est la cellule en cours de modification à tout moment.

Y at-il une API pour fermer ce genre de rédacteurs en chef?

Menu contextuel

Était-ce utile?

La solution

QTableWidget 19 slots publics hérite de QWidget. L'un d'entre eux est setDisabled (), qui devrait désactiver les événements d'entrée pour ce widget et tous ses enfants.

Je voudrais essayer:

table.setDisabled( true );
table.setDisabled( false );

Bien que vous avez dit qu'il ne fonctionne pas pour vous, il existe une méthode alternative: Si vous ne le faites pas comme ça (la table perd le focus, je crois), vous pouvez essayer d'utiliser EditTriggers . Par exemple:

table.setEditTriggers( QAbstractItemView::NoEditTriggers );

Autres conseils

table.setCurrentItem(None) est ce qui a fonctionné pour moi. (Ne pas oublier de bloquer les signaux si vous utilisez une fonction de l'emplacement cellChanged / itemChanged.)

est avec PyQt. C ++ Je pense remplacer Aucun avec NULL.

Vous pourrez peut-être utiliser QTableWidget.closePersistentEditor () pour fermer l'éditeur. Cependant, QAbstractItemView.closeEditor () peut être plus proche de ce que vous voulez, d'autant plus que vous semblez être à l'aise avec l'API à base QModelIndex et utilisez déjà un widget éditeur personnalisé.

Je ne peux pas parler pour les widgets de liste. Mais, je suis ici pour essayer de faire quelque chose de similaire.

J'étais double-cliquant sur une cellule et sur la base de la colonne, ce qui porte un sous-forme d'une liste, quand cela était mouvement de fermeture à la colonne suivante appropriée en fonction de la valeur sélectionnée.

Mon problème était que je pouvais obtenir la valeur dans la cellule et « sélectionner » la prochaine cellule appropriée, mais la cellule d'origine est resté sélectionné en mode édition!

Il finalement compris que mon double-clic sélectionnait la cellule, par exemple. l'édition.

Un simple clic sélectionne la cellule mais ne s'ouvre pas un mode d'édition.

Side note: Jamais pourrait obtenir ce sous forme d'agir véritablement modal, donc je créé une boucle sous la forme d'appel: alors que la forme sous était visible, avec le seul code étant app.processEvents ()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top