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 :

QWidget dans QLayout


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Bonjour,
    En fait mon problème si situe au niveau de la dimension des QWidget que j'ajoute à mon QLayout (QVBoxLayout plus precisement).

    Ce que je ne comprends pas, c'est que, lorsque j'ajoute un TextEdit, un QPushButton, un QSlider ou autre, ils prennent autant de place que disponible dans le layout, ce qui est normal, mais lorsque j'ajoute des QWidget (sans leurs donner de taille, donc sans resize(),setGeometry(),...) ils ne prennent pas toute la place disponible et ont une taille par defaut d'environ 500x500 (à vue d'oeil).
    Ce qui est très embêtant car cela m'oblige à les resizer à la main, alors que moi je voudrais qu'ils prennent toute la place disponible automatiquement, comme les autres widgets.

    Voilà un petit exemple pour illustrer mes propos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    #include <QApplication>
    #include <iostream>
    #include <QToolBar>
    #include <QWidget>
    #include <QMainWindow>
    #include <QLayout>
    #include <QVBoxLayout>
    #include <QHBoxLayout>
    #include <QRect>
    #include <QPushButton>
    #include <QTextEdit>
    #include <QSlider>
     
     
     
    using namespace ::std;
     
    int main()
    {
      int argc = 0;
      char** argv = NULL;
     
     
      QApplication app( argc,  argv);
     
      QMainWindow* m_manager = new QMainWindow();
      m_manager->resize(1500, 900);
     
      QWidget *centerView = new QWidget();
     
      QVBoxLayout *layout = new QVBoxLayout();
     
     // centerView->resize(1500, 900);
     
     
      QWidget* viewPanel1 = new QWidget();
     // viewPanel1->resize(1500, 300);
     
      QTextEdit* text = new QTextEdit();
      QSlider* slide = new QSlider(Qt::Horizontal);
     
      QPushButton b1, b2, b3;
     
      b3.setParent(viewPanel1);
      b3.resize(viewPanel1->width(), viewPanel1->height());
     
      layout->addWidget(viewPanel1);
    //  layout->addWidget(text); 
      layout->addWidget(&b1);
      layout->addWidget(&b2);
      layout->addWidget(slide);
     
     
      centerView->setLayout(layout);
      m_manager->setCentralWidget(centerView);
     
     
     /* viewPanel1->show();
      b1.show();
      b2.show();*/
      m_manager->show();
     
     app.exec();
     
    return 0;
    }
    Je ne comprends pas nonplus pourquoi lorsque j'ajoute le TextEdit au layout, le viewPanel1 ne s'affiche plus(ou est masqué).

    Je suis entrain de faire des recherches sur la methode setSizePolicy(), donc si quelqu'un pense que je suis sur la bonne voie ou l'inverse, je vous écoute.

    Merci de votre aide, en esperant avoir été clair.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Je suis entrain de faire des recherches sur la methode setSizePolicy(), donc si quelqu'un pense que je suis sur la bonne voie ou l'inverse, je vous écoute.
    Je pense que tu cherches au bon endroit. Ceci devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myWidget->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding);
    G.

  3. #3
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Ca a l'air de fonctionner.
    Merci infiniment de ton aide.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Pour enlever le tag résolu, tu fais exactement la même chose que pour le mettre : tu cliques sur le bouton RESOLU en bas du topic

    G.

  5. #5
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Merci encore.

    En fait mon problème c'est que je souhaite utiliser un QMainWindow.
    Pour le widget central (qui est un QWidget), ça marche très bien, mais pour les docks widgets (QDockWidget), j'arrive pas à faire en sorte qu'une image par exemple prenne tout l'espace du dock widget et se resize automatiquement.

    En fait, le probleme est que l'on ne peut pas ajouter un layout à un QMainWindow car il en possède déjà un.
    Donc ce que j'ai fait, c'est qu'à chaque dock widget que j'ajoute au QMainWindow, je lui ajoute un layout auquel j'ajoute un autre dock widget surlequel j'appelle la methode setPolicysize(...).

    A présent l'image prend bien tout le dock widget mais il n'est plus movable ni floatable bien que j'appelle ->setFeatures(QDockWidget::AllDockWidgetFeatures).
    De plus l'image ne se resize pas quand je change la dimension de la fenêtre.

    En esperant avoir été clair.

  6. #6
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    En fait il fallait utiliser la methode setWidget() de QDockwidget.
    J'expliquerai un peu plus en détails plus tard pour ceux que cela interesse.

    Merci encore de ton aide Gulish.

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

Discussions similaires

  1. QWidget dans QTableWidget
    Par DarKaa dans le forum Qt
    Réponses: 4
    Dernier message: 19/06/2013, 10h41
  2. QWidget dans un QwtPlot
    Par Entiz dans le forum Qwt
    Réponses: 5
    Dernier message: 19/09/2011, 12h46
  3. Dessiner un QWidget dans un QScrollArea
    Par LaLoutre dans le forum Débuter
    Réponses: 2
    Dernier message: 22/06/2010, 11h36
  4. QWidget dans QMainWindow
    Par h2g2_42 dans le forum Qt
    Réponses: 1
    Dernier message: 28/10/2009, 00h43

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