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 :

Ajouter dynamiquement un widget dans une disposition et le décaler


Sujet :

Qt

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut Ajouter dynamiquement un widget dans une disposition et le décaler
    Bonjour,
    Je cherche à ajoute des widgets dans un layout à une certaine position.
    Le problème est qu'en utilisant addWidget, les widgets s'empilent.
    Y a-t-il un moyen d’insérer un widget dans une ligne et de décaler vers le bas le widget déjà présent dans cette ligne ainsi que les widgets des lignes inférieures?

    Merci!

  2. #2
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Je ne l'ai jamais utilisée mais la méthode insertWidget semble faire ce que tu veux.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Merci pour la réponse.
    J'ai oublié de préciser que j'utilisais un QGridLayout. La méthode insertWidget ne semble pas exister pour cette classe.
    Peut être que je vais me résoudre à changer de type de layout...

  4. #4
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    En effet ce layout fonctionne différemment, comment sont disposés tes widgets exactement ? Tu parles de décaler une ligne, les lignes contiennent potentiellement plusieurs widgets ? Sinon le layout vertical est plus simple et suffisant.
    J'ai fait l'essai avec addWidget en spécifiant le numéro de ligne mais effectivement ça n'insère pas, les widgets se superposent. D'après ce que je trouve sur le net il n'y a pas de fonction pour décaler les widgets, il faut les déplacer à la main (les enlever du layout et les ajouter avec les nouvelles positions).

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    En fait j'ai deux Widgets à ajouter à chaque ligne (une checkbox et un label).
    Et je veux ajouter ces lignes entre d'autres widgets: un label et un cadre(qui prend la place de deux widgets)

    J'ai l'impression que le plus facile c'est de créer un container (du genre scrollArea) et d'ajouter dynamiquement mes widgets dans ce container.
    Qu'en penses-tu?

  6. #6
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Un layout vertical (QVBoxLayout) ferait un conteneur simple, et apparemment on peut insérer des wigets. L'utilisation d'une scroll area n'est utile que si tes widgets peuvent prendre plus de place que la fenêtre le permet. Mais je pense que c'est le plus simple oui, il est assez facile d'imbriquer des layout horizontaux dans un layout vertical (QFormLayout simplifie aussi cela dans le cas où on a toujours un label et un widget par ligne). Pour la taille tu peux jouer avec le paramètre stretch quand tu ajoutes les widgets, pour qu'un widget soit 2 fois plus large que l'autre par exemple.

    Au passage tout ça n'est utile que si tu as vraiment besoin de modifier à l'exécution le contenu. Si par exemple tu une seule ligne à ajouter/enlever, toujours au même endroit, tu peux envisager de mettre le widget dès le début et de le rendre invisible quand tu ne veux pas qu'il soit présent.

    De manière générale je passe par le designer pour faire les layouts, quand on l'a pris en main on s'évite énormément de code, mais bien sûr ça ne peut pas marcher pour tout ce qui est dynamique (enfin tu peux toujours poser une base dans le designer et aller insérer des widgets à l'exécution).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Oui je suis assez fan du designer aussi, il fait gagner beaucoup de temps.
    En l’occurrence j'ai jusqu'à 30 lignes à ajouter dynamiquement. Je vais donc poser la scrollArea dans le designer et ajouter les widgets dans son layout.

    En tout cas merci beaucoup pour les conseils!

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

Discussions similaires

  1. [1.x] EmbedForm et ajout dynamique de champ dans une formulaire.
    Par Noobboy dans le forum Symfony
    Réponses: 6
    Dernier message: 10/08/2011, 15h03
  2. Réponses: 6
    Dernier message: 04/01/2011, 10h07
  3. ajout dynamiques d'icones dans une forme
    Par a.sana dans le forum C#
    Réponses: 1
    Dernier message: 29/04/2009, 10h12
  4. Réponses: 5
    Dernier message: 07/08/2007, 10h10

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