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

Discussion :

Gestion du layout d'un widget à taille variable

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 99
    Points : 58
    Points
    58
    Par défaut Gestion du layout d'un widget à taille variable
    Bonjour,

    J'essaie actuellement de jouer sur la visibilité d'un label lbl1 dans un grid layout contenant d'autres labels dont la hauteur doit être indépendante de l'état de lbl1 :

    Nom : Geo.png
Affichages : 260
Taille : 2,9 Ko
    (en rouge ce qui est connu et relatif au parent (geometry()).

    L'objectif n'est pas d'avoir un spacer qui remplace le lbl1 s'il est caché mais bien de jouer sur la hauteur du conteneur global sans pour autant modifier la hauteur des deux labels du haut).

    Ci-joint un projet test (code moche ) ou j'essaie de trouver la solution sans résultat concluant pour le moment.

    J'espère que vous pourrez me mettre sur la voie

    Merci!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre habitué
    Avatar de Glân von Brylân
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 133
    Points : 186
    Points
    186
    Par défaut
    J'ai un peu de mal à comprendre :
    sur ton shéma, lbl1, c'est le rectangle au milieu en bas ? Et tu veux pouvoir le faire disparaître sans influer sur h et w ?
    Si c'est ça tu as juste à modifier la propriété visible héritée de QWidget avec setVisible(bool). false pour le faire disparaître et true pour le faire revenir.
    Si tu veux plus d'informations, je t'inviterais à aller voir la doc.
    Cela répond à ta question ?
    Les pointeurs intelligents, c'est mignon mais trop long à écrire.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 99
    Points : 58
    Points
    58
    Par défaut
    Je veux en effet pouvoir jouer sur la visibilité de la zone du bas sans que cela ait une influence sur la hauteur des autres zones.

    Avec le comportement par défaut, si je cache la zone du bas avec la méthode setVisible, le grid layout du conteneur principal se met à jour pour que les zones du haut s'agrandissent pour combler l'espace "du bas" maintenant inoccupé.

    Je pourrais utiliser setFixedHeight pour les zones du haut mais comme la taille du conteneur principal peut être mis à jour à n'importe quel moment, si la taille est fixée, je ne pourrais plus jouer sur le setGeometry à chaque redimensionnement.

  4. #4
    Membre habitué
    Avatar de Glân von Brylân
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 133
    Points : 186
    Points
    186
    Par défaut
    Hm, tu peux éventuellement placer un autre widget à la place, du genre un QFrame, on ne le verra pas et il devrait "bloquer" les widgets du dessus...
    À part contourner un peu le problème comme ça, je ne vois pas trop ce que tu pourrais faire, désolé.
    Les pointeurs intelligents, c'est mignon mais trop long à écrire.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 99
    Points : 58
    Points
    58
    Par défaut
    Hm, tu peux éventuellement placer un autre widget à la place, du genre un QFrame, on ne le verra pas et il devrait "bloquer" les widgets du dessus...
    Autant utiliser un QSpacerItem dans ce cas mais comme le conteneur principal peut aussi faire parti d'un tableau, je ne peux pas me permettre de garder un espace inutilisé pour remplacer l'élément invisible..

    J'ai finalement ré-implémenté resizeEvent et bidouiller un peu pour obtenir le résultat souhaité.
    L'idée est en gros de :
    - Cacher la zone du bas
    - Redimensionner la hauteur des zones du haut à la nouvelle hauteur du conteneur global
    - Rendre à nouveau visible la zone du bas
    - Agrandir la hauteur du conteneur global à l'aide de setGeometry() pour accueillir la zone du bas (j'avais un doute sur ce point d'ailleurs puisque je me disais que j'allais obtenir une boucle infinie en appelant setGeometry() depuis resizeEvent().

  6. #6
    Membre habitué
    Avatar de Glân von Brylân
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 133
    Points : 186
    Points
    186
    Par défaut
    Donc finalement tu as trouvé une solution ? Désolé de n'avoir pas pu être plus utile.
    Les pointeurs intelligents, c'est mignon mais trop long à écrire.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/09/2006, 10h53
  2. [Beamer] Table des matières de taille variable
    Par jacklafrip dans le forum Beamer
    Réponses: 1
    Dernier message: 25/08/2006, 11h44
  3. objet de taille variable en attribut static
    Par BigNic dans le forum C++
    Réponses: 8
    Dernier message: 06/07/2006, 21h41
  4. [TP] Tableau de taille variable
    Par Ripley dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 30/01/2006, 15h36
  5. Comment obtenir un tableau à taille variable ?
    Par marsupilami34 dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2005, 15h03

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