2010-10-18 23 views
2

J'utilise un QTreeWidget qui affiche une liste de fichiers afin qu'un utilisateur puisse copier des fichiers dans un répertoire. Je souhaite interdire à l'utilisateur de copier les fichiers dans le même répertoire. Ainsi, je veux désactiver seulement une ligne dans mon QTreeWidget de sorte qu'il ne soit pas sélectionnable. J'ai essayé d'utiliser la méthode setDisable(bool) de l'objet QTreeWidgetItem, mais le problème est qu'il désactive l'ensemble de la sous-arborescence.QTreeWidget: désactiver une ligne mais pas la sous-arborescence

Comment obtenir une seule ligne désactivée dans un QTreeWidget?

+0

Vous ne savez pas si cela fonctionnera, mais avez-vous essayé de désactiver celui que vous voulez, puis d'activer tous les sous-éléments? – Anthony

+0

Oui, mais cela n'a pas fonctionné :( – Tangui

Répondre

-3

Si vous souhaitez interdire la copie de fichiers dans un répertoire, créez un répertoire en lecture seule.

chmod (dir, 0555) fera répertoire - dir en lecture seule, vous pouvez chmod() dans

--Cheers

+2

Je fais face à l'interface utilisateur, pas les droits du système de fichiers! – Tangui

2

Je voudrais essayer de désactiver le Qt :: ItemIsDropEnabled avec drapeau QTreeWidgetItem :: setFlags , , c'est-à-dire setFlags (Qt :: ItemIsSelectable | Qt :: ItemIsUserCheckable | Qt :: ItemIsEnabled)

Je n'ai pas testé cela.

+0

Je voudrais essayer ceci avec le drapeau ItemIsSelectable, ce qui le laisserait (et probablement le reste de l'arbre) activé, –

+0

Merci pour vos réponses, mais cela ne fonctionne pas non plus, au mieux, la ligne n'est pas mise en surbrillance, mais vous êtes toujours dessus (une bordure pointillée est visible). – Tangui