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 :

maximizer la taille d'un widget (à 100% de la taille de son parent)


Sujet :

Qt

  1. #1
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut maximizer la taille d'un widget (à 100% de la taille de son parent)
    salut,

    j'ai mis un QglWidget dans une QMainWindow, et je n'arrive pas à faire en faire qu'il prenne toute la taille de la fenetre.

    Ca a l'air tellement simple pourtant, lorsque je ne lui donne pas de parent, il en crée une et prend toute la place dispo. J'ai essayé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	QSizePolicy sizePolicy;
    	sizePolicy.setHorizontalPolicy(QSizePolicy::Expanding);
    	sizePolicy.setVerticalPolicy(QSizePolicy::Expanding);
    	qglWidget.setSizePolicy(sizePolicy);
    mais ca n'a pas l'air de marcher.

    une idée ?

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    Salut, t'as mis un layout ?

    Essaie de rajouter un layout, directement depuis Qt Designer (le plus simple) ou en code :

    QVBoxLayout *layoutCentral;
    layoutCentral = new QVBoxLayout(mainwindow->centralWidget());
    layoutCentral->setContentsMargins(0,0,0,0);
    layoutCentral->addWidget(qglWidget);

    Plus proprement, moi je procède différement :

    je fais mon QMainWindow, et à l'endroit où je veux mettre mon qglwidget je met un QFrame qui sert juste de cadre et dedans je fous le qglwidget en code (puisque c'est pour ma part une classe à part entière).

    Exemple :
    Lorsque vous avez trouvé solution à votre problème, n'oubliez pas de cliquer en bas de la page
    Besoin d'un photographe de mariage : http://www.triangle-photo.fr

  3. #3
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    ok merci je vais essayer de mettre une QFrame ou un layout

    sinon j'avais commencé à regarder la piste designer aussi, mais ca m'avait l'air hasardeux le coup du "promote widget"

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    pourquoi un promote widget ??
    C'est simple, dans ton QMainwindow tu mets un QFrame.
    Ensuite, tu cliques sur le centralWidget du QMainWindow et tu lui ajoutes un layoutWidget depuis Qt Designer. Ton Qframe devrait alors occuper tout l'espace disponible.
    Ensuite, ça sera en code qu'il faudra 'layouter' ton qglwidget car tu ne pourras pas le faire depuis Qt Designer puisque dans ton QFrame il n'y a rien.
    du coup, tu reprends le code d'exemple filé ci dessus, sauf que le parent du layout n'est plus que centralWidget mais le qframe.
    Lorsque vous avez trouvé solution à votre problème, n'oubliez pas de cliquer en bas de la page
    Besoin d'un photographe de mariage : http://www.triangle-photo.fr

  5. #5
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    hello,

    donc c'est résolu, directement dans le code.

    le problème était bien que je n'avais pas mis le widget dans un layout. (d'ailleurs je n'avais pas capté que QMainWindow avait un layout par défaut, et qu'il suffit d'appeler setCentralWidget ou autre pour l'utiliser)

    merci

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

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

Discussions similaires

  1. Fixer la taille d'un Widget avec children
    Par pfeuh dans le forum Tkinter
    Réponses: 1
    Dernier message: 14/11/2011, 10h31
  2. Fixer la taille d'un widget à son parent
    Par johnraikonen dans le forum Débuter
    Réponses: 2
    Dernier message: 11/05/2011, 08h37
  3. Réponses: 7
    Dernier message: 05/08/2009, 11h01
  4. Fixer la taille d'un widget GWT
    Par kazabliz dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 22/06/2009, 17h46

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