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 :

Design d'une application -> Dimensionnement des objets


Sujet :

Qt

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut Design d'une application -> Dimensionnement des objets
    Bonjour,

    J'ai envie de dire, je débute en Qt. Mon problème aujourd'hui est dans le design de l'application, principalement le dimensionnement des objets dans celle-ci.

    Comme vous vous en doutez, je fais tout à la main, je n'utilise donc pas QtDesigner, et je n'en ai pas l'intention ( il se peut que ce soit de l'idiotie ).
    Dans l'architecture des objets, je reproduit souvent le schéma suivant:

    1. Des QFrame
    2. Des QBoxLayout ( verticaux ou horizontaux ) ..
    2.5. Il peut y avoir des QGroupBox pour la présentation
    3. Les widgets finaux ( boutons / QSlider .... )

    Les QFrame pouvant être mises dans deux nouveaux QLayout pour sélectionner l'emplacement et autre.

    Dites moi, si ce schéma peut fonctionner, ou s'il comporte des problèmes.

    Maintenant, mon problème, c'est le dimensionnement de certains objets ( je voudrais qu'il prennent le plus de place possible, ou le moins de place possible ).
    Par exemple, en ce moment, j'ai deux QPushButton et un QSlider (horizontal) dans une QHBoxLayout, qui prennent énormément de place en hauteur. Je veux donc dire: "arrête de prendre autant de place en hauteur, rétrécit toi au minimum des besoins".

    Je compter le faire en indiquant avec QSizePolicy à la QFrame, mais cela ne semble pas être la meilleure solution ( et même semble ne pas marcher ).
    De plus, je ne veux pas utiliser de QSizeHint() car il faut indiquer les tailles à la main ( je tiens à rester assez dynamique ).

    Que me conseillez vous pour effectuer mes redimensionnements?

    Merci pour votre aide

    EDIT:
    C'est surtout qu'à la fin, j'en arrive à mettre mes QPolicy tout le temps à Fixed, et qu'il me semble que Minimum à le comportement que devrais avoir Maximum ( et Maximum celui de Minimum ).
    ( Donc Minimum va essayer de prendre le plus de place, et Maximum le plus de place )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Membre éprouvé
    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 : 39
    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
    Par défaut
    Salut, avant tout je trouve que les noms des SizePolicy ne sont pas forcément clairs :
    http://qt.developpez.com/doc/latest/...ml#Policy-enum
    Minimum ne veut pas dire que ton widget prendra un espace minimum, mais au contraire qu'il ne sera jamais plus petit que sa taille conseillée (sizeHint). Maximum à l'inverse signifie que ton widget ne sera jamais plus grand que la taille conseillée.

    Pour ma part, pour rester dynamique, j'ai pris l'habitude d'encapsuler tous les widgets dans des layouts, et ne pas utiliser fixed (sauf quelques cas spéciaux, comme la hauteur des boutons etc).
    Preferred reste dans la plupart des cas ce qui rend le mieux. En mettant quelques widgets en Expanding pour qu'ils occupent l'espace restant.

    Je n'ai jamais utilisé QFrame, mais je doute que ça soit vraiment utile pour la plupart des interfaces. Avec une arborescence de Layouts j'ai toujours réussi à obtenir ce que je voulais. On met un layout principal dans la MainWindow avec setLayout, puis des widgets et des "sous" layouts dans le layout principal.

    Personnellement j'utilise QDesigner pour la quasi totalité de mes interfaces, c'est beaucoup moins fastidieux même s'il reste parfois des propriétés qu'on doit paramétrer dans le code, ça reste rare. Ca permet surtout d'avoir un aperçu de la fenêtre immédiatement, et donc voir les effets des réglages des sizePolicy.

  3. #3
    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
    Tu as un truc pas évident là

    Citation Envoyé par LittleWhite Voir le message
    Comme vous vous en doutez, je fais tout à la main, je n'utilise donc pas QtDesigner, et je n'en ai pas l'intention ( il se peut que ce soit de l'idiotie ).
    Dans l'architecture des objets, je reproduit souvent le schéma suivant:

    1. Des QFrame
    2. Des QBoxLayout ( verticaux ou horizontaux ) ..
    2.5. Il peut y avoir des QGroupBox pour la présentation
    3. Les widgets finaux ( boutons / QSlider .... )

    Les QFrame pouvant être mises dans deux nouveaux QLayout pour sélectionner l'emplacement et autre.

    Dites moi, si ce schéma peut fonctionner, ou s'il comporte des problèmes.
    je fait la mêle chose. J'aime pas trop le designer non plus.

    Je compter le faire en indiquant avec QSizePolicy à la QFrame, mais cela ne semble pas être la meilleure solution ( et même semble ne pas marcher ).
    la policy c'est sur la widget dont tu veut contrôler la politique. Sur parent, ca n'as pas forcement d'effet.

    C'est surtout qu'à la fin, j'en arrive à mettre mes QPolicy tout le temps à Fixed, et qu'il me semble que Minimum à le comportement que devrais avoir Maximum ( et Maximum celui de Minimum ).
    ( Donc Minimum va essayer de prendre le plus de place, et Maximum le plus de place )
    c'est un problème de compréhension. re-lit bien le tableau
    http://qt.developpez.com/doc/latest/...ml#Policy-enum
    minimum = sizeHint est la taille min voulu du widget
    maximu = sizeHint est la taille max voulu du widget

    sinon, y as aussi le stretch quand tu ajoute une widget
    http://qt.developpez.com/doc/latest/...html#addWidget

    En complément, tu peut regarder http://qt.developpez.com/doc/latest/...onstraint-enum
    et surtout
    http://qt.developpez.com/doc/latest/layout.html

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    J'utilise les QFrame, parce qu'il semblait que l'on ne pouvait pas mettre un Layout dans un autre Layout ( j'ai du me tromper quelque part, j'imagine ).

    J'ai réussi un truc ( du moins pour cette application ) avec les QSizePolicy en Minimum ( pour que cela prenne le plus de place donc ) et Fixed. Le redimensionnement de la fenêtre me convient, donc je pense que c'est bon.

    Même en lisant plusieurs la documentation, j'ai du mal avec les sizeHint() ...

    QSizePolicy::Minimum The sizeHint() is minimal, and sufficient. The widget can be expanded, but there is no advantage to it being larger (e.g. the horizontal direction of a push button). It cannot be smaller than the size provided by sizeHint().
    QSizePolicy::Maximum The sizeHint() is a maximum. The widget can be shrunk any amount without detriment if other widgets need the space (e.g. a separator line). It cannot be larger than the size provided by sizeHint().
    QSizePolicy::Minimum Le sizeHint() est minimal et efficace. Le widget peut être étendu, mais il n'y a pas d'avantage à être plus grand (exemple: la largeur d'un boutton poussoir ). Il ne peut pas être plus petit que la taille de sizeHint().
    QSizePolicy::Maximum Le sizeHint() est maximal. Le widget peut être rétrécit sans dégradation si les autres widgets nécessite la place ( exemple une ligne séparatrice ). Il ne peut pas être plus grand que la taille de sizeHint()
    Dans le minimum, ce que j'y comprends, c'est que on met le sizeHint() au minimum possible ( sans manger dans les objets ) et que notre widget ne pourra pas être plus petit. Ok, mais alors pourquoi il prend le plus de place donc O_o.
    Et dans le maximum, c'est quoi qui dit la priorité entre tel ou tel widget, vu que mon widget peut être rétrécit selon les autres.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    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 LittleWhite Voir le message
    mais alors pourquoi il prend le plus de place donc O_o.
    Par ce qu'il y as de la place ?

    Citation Envoyé par LittleWhite Voir le message
    Et dans le maximum, c'est quoi qui dit la priorité entre tel ou tel widget, vu que mon widget peut être rétrécit selon les autres.
    Principalement les policy et les stretch.

    Le mieux serait un exemple qui te pose problème

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par Yan
    Le mieux serait un exemple qui te pose problème
    Actuellement ( pour cette application ) cela va, j'ai réussi à avoir un résultat correct, assez facilement ( mais si j'ose dire, c'était une application simple ).

    Donc je pense que l'on peut fermer cette discussion ... mais je ne suis toujours pas sur de savoir ce qui est le meilleur à faire, lorsque l'on fait le design d'une application.

    Comme je l'ai dit, pour le moment, je suis souvent dans ce genre d'esprit:
    Citation Envoyé par LittleWhite
    1. Des QFrame
    2. Des QBoxLayout ( verticaux ou horizontaux ) ..
    2.5. Il peut y avoir des QGroupBox pour la présentation
    3. Les widgets finaux ( boutons / QSlider .... )
    Qui est peut être loin d'être bon :s.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. une application builderC avec des skins
    Par bradkimbel dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2007, 22h22
  2. Réponses: 13
    Dernier message: 03/05/2007, 21h16
  3. Quel langage pour une application qui gère des contrats et des factures ?
    Par pigpen dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 12/02/2007, 19h06
  4. Faire une application Web à partir d'objets win32
    Par WebPac dans le forum Delphi .NET
    Réponses: 7
    Dernier message: 02/05/2006, 19h11

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