2012-10-08 4 views
0

Je cherche à rendre un formulaire QT en lecture seule, mais pas désactivé. Ce que j'essaye de réaliser est que l'utilisateur est toujours capable d'utiliser les contrôles sur lui, par exemple voir quels éléments sont là dans une zone de liste déroulante, ou faire défiler jusqu'à la fin d'une zone de liste, mais ne devrait pas pouvoir changer le les valeurs de ces composants. Puisque la forme désactivée n'autorise aucune interaction, et que je n'ai rien trouvé dans l'API pour faire un formulaire en lecture seule, je me demande quelle solution est possible pour ce problème.Formulaire QT en lecture seule

Répondre

0

J'ai choisi l'approche d'avoir une méthode spéciale dans ma classe de formulaire qui:

  • fait les modifications de texte en lecture seule
  • le combo/vérification/liste, d'autres contrôles désactivés
  • contrôles qui autoriser la navigation sont activés
1

La seule façon de le faire serait de se connecter au signal currentIndexChanged du QComboBox en question et de l'empêcher de changer ce que vous voulez qu'il soit. Si c'est quelque chose que vous voulez faire beaucoup, vous pouvez envisager de sous-classer le QComboBox; mais il n'y a rien qui vous permet de faire cela dans le cadre par défaut.

+0

En fait, je prévois de le faire pour une fenêtre entière avec non seulement des listes déroulantes dessus ... mais d'autres composants. Peut-être devrais-je sous-classer beaucoup de composants. Merci pour votre réponse. – fritzone

+0

La zone de liste déroulante est sûrement la seule qui pose problème, car l'état 'désactivé' pour la plupart des autres widgets (par exemple, LineEdit ..) sera suffisant pour une vue en lecture seule. – TZHX

+0

nop, par exemple vous ne pouvez pas changer les Tabs dans un TabWidget soit :( – fritzone

Questions connexes