IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

setEnabled(false); pour QBoxLayout


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Par défaut setEnabled(false); pour QBoxLayout
    Bonjour à tous,

    Je débute tout juste avec Qt 4 et je commence à faire une interface pour un logiciel à moi.

    Jusqu'à maintenant, j'ai plutôt bien géré les propriétés des widgets et les événements pour les modifier grâce au connect (avec le moc qu'on doit refaire à chaque fois qu'on change le .h ...!).

    Mais voilà le problème : j'aimerai faire par exemple 2 QBoxLayout dans mon layout globale, dont l'un serait caché initialement et devient visible quand on appuye "OK" dans le 1er.

    A priori, rien de compliqué, mais une fois dessiné le layout, je tente un

    "myboxlayout -> setEnabled(false);" mais ca ne le cache pas.

    voici ce que dit la doc dans 'Complete Member List for QHBoxLayout' :

    "void QLayout::setEnabled ( bool enable )
    Enables this layout if enable is TRUE, otherwise disables it.
    An enabled layout adjusts dynamically to changes; a disabled layout acts as if it did not exist.

    By default all layouts are enabled.

    See also isEnabled(). "

    Donc rien à dire, à priori ca devrait marcher.

    Je tiens à dire que j'ai refait le moc, détruit les fichiers inutiles avant la compilation ...

    Il doit y avoir un truc que j'ai pas compris avec les QBoxLayout.

    Note : dans l'un des premiers exemples du bouquin "Qt4 et C++", ils utilisent le QtDesigner un objet de type "QGroupBox" qui contient d'autres widgets et qui apparait quand on appuye sur le bouton "More". J'ai essayé de m'y adapter mais ca casse mon architecture mais j'avoue aussi que je n'arrive pas très bien à lire un ui_ !!!

    Merci d'avance pour votre aide.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut,
    un objet enabled peut être visible, cela n'as rien à voir.
    enabled veut dire en gros objet éditable ou non.

    Si tu veut le cacher, tu peut utiliser hide() et show() pour le faire apparaître.
    Ou utiliser setVisible
    http://qt.developpez.com/doc/latest/...l#visible-prop

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Par défaut
    Justement, QBoxLayout n'a pas de hide() show() ou setVisible()

    http://qt.developpez.com/doc/latest/...t-members.html

    en plus, bien que mon QBoxLayout soit en setEnabled(false), je peux certe le voir mais même l'éditer.

    Je pense que la description de setEnabled pour un QBoxLayout est explicite, il devrait se cacher :

    "void QLayout::setEnabled ( bool enable )
    Enables this layout if enable is TRUE, otherwise disables it.
    An enabled layout adjusts dynamically to changes; a disabled layout acts as if it did not exist.

    By default all layouts are enabled.

    See also isEnabled(). "

    sauf si "adjusts dynamically " et " if it did not exist" n'est pas se que je pense. Peut etre un problème de comprehension de ma part.

    En tout cas il me faudrait une solution s'il vous plait.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    j'avais compris que tu parlais de widget et non de layout.

    Ca veut dire quoi cacher un layout??????

  5. #5
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Il veut peut-être cacher l'intérieur du layout, autrement dit les trucs qui sont dedans ?

  6. #6
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    bon, je résume ce que j'écrivais avant que le serveur me donne une internal error 500 :

    Ce que tu veux c'est apparement cacher des éléments/ou les désactiver.

    Si ton but est d'autoriser l'accès a des éléments seulement dans certaines circonstances, alors tu peux utiliser la méthode setEnabled() de chacun de ces éléments. Cette solution devenant très rapidement chiante, tu peux regrouper tes éléments, et au lieu de les mettres dans un layout, tu les mets dans un widget. Ensuite, tu joues avec les méthodes setEnabled(), hide(), show() de ce widget.

    Un layout est un objet de mise en forme, rien de plus. Tu devrais faire des tests.

    Fais la chose suivante :
    _tu fais un nouveau document sous qt designer et tu choisis Widget (le plus simple).

    _ tu glisses 4 boutons sur ce widget.

    _ ensuite tu cliques sur un espace vide de ce widget ou tu le selectionnes dans l'inspecteur d'objets (menu Tools>Objet Inspector) et tu selectionne le premier élément de ta liste qui est le form de type QWidget.

    _ Puis, dans la barre d'outils tu cliques sur les trois petites barres superposées verticalement "Lay out vertically" et tu regardes ce que ça fais.
    Tu peux aussi (je te conseille regarder le code que cela génere (menu Form>View code)

    enfin, un autre essai :
    _ tu casses le layout existant (tu reselectionne le form) puis tu appuies le boutons dans la barre d'outils à droite du "Lay out vertically" et qui s'appelle "Break Layout"

    _ tu choisis deux boutons (maintient shift pour les selectionner) et tu cliques le "Lay out horizontally", même chose pour les deux autres.

    _ tu reselectionnes ton form (le QWidget principal) et tu cliques "lay out vertically"

    a partir de là, tu devrais tout comprendre

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Kestufou Voir le message
    . Cette solution devenant très rapidement chiante, tu peux regrouper tes éléments, et au lieu de les mettres dans un layout, tu les mets dans un widget. Ensuite, tu joues avec les méthodes setEnabled(), hide(), show() de ce widget.
    Petite correction,
    tu peut (doit?) garder le/les layout. mais il faut le mettre dans une widget.
    A partir de là, tu applique les fonctions données sur cette widget.

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Par défaut
    j'ai moi même pas trop capté le concept de layout,
    mais en gros un layout ca contient des widgets, c'est comme un regroupement de widget qu'on disposent à peu près comme on le souhaite.

    Moi j'aimerai, au lieu de caché chacun des widgets, cacher l'ensemble du groupement, donc le layout.

    Possible or not possible ?

    donnez moi une breve définition de layout s'il vous plait.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 4] 0.2 <= 0.2 => false pour PHP
    Par grinder59 dans le forum Langage
    Réponses: 3
    Dernier message: 26/01/2011, 17h45
  2. JButton setEnable(false) sans changer l'aspect
    Par MustOne dans le forum Composants
    Réponses: 0
    Dernier message: 21/05/2009, 08h42
  3. condition False pour une requête
    Par guestCam dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/03/2007, 16h00
  4. enabled à false pour une ligne d'un Stringgrid
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 2
    Dernier message: 17/10/2006, 09h55
  5. [JTree] SetEnabled( false)
    Par thomas_strass dans le forum Composants
    Réponses: 3
    Dernier message: 29/04/2004, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo