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::sizeHint() n'est appelé qu'une fois


Sujet :

Qt

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut QWidget::sizeHint() n'est appelé qu'une fois
    Bonjour, je teste actuellement QWidget::sizeHint() pour une future application qui au cour de son exécution peut changer de dimensions...

    J'ai le code suivant :

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "Fenetre.hpp"
     
    int main(int argc, char *argv[])
    {
            QApplication app(argc, argv);
     
            Fenetre i;
     
            return app.exec();
    }
    Fenetre.hpp
    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
     
    #ifndef FENETRE_HPP
    #define FENETRE_HPP
     
    #include <QtGlobal>
    #include <QtCore>
    #include <QtGui>
     
    class Fenetre : public QWidget
    {
        Q_OBJECT
     
        private:
            QPushButton* m_buttonA;
            QPushButton* m_buttonB;
            int m_size;
     
        protected:
     
     
        public:
            Fenetre(QWidget* widgetParent = 0);
            virtual ~Fenetre();
     
            virtual QSize sizeHint() const;
     
            Q_SLOT void setButton();
            Q_SLOT void setSize();
     
    };
     
    #endif // FENETRE_HPP
    Fenetre.cpp
    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
     
    #include "Fenetre.hpp"
     
    Fenetre::Fenetre(QWidget* widgetParent)
        : QWidget(widgetParent),
          m_size(150)
    {
        m_buttonA = new QPushButton("Clique ! A", this);
            QObject::connect(m_buttonA, SIGNAL(clicked()), this, SLOT(setButton()));
     
        m_buttonB = new QPushButton("Clique ! B", this);
            QObject::connect(m_buttonB, SIGNAL(clicked()), this, SLOT(setSize()));
     
        QVBoxLayout *layout = new QVBoxLayout;
            layout->addWidget(m_buttonA);
            layout->addWidget(m_buttonB);
     
        this->setLayout(layout);
        this->show();
    }
     
    Fenetre::~Fenetre()
    {
     
    }
     
    QSize Fenetre::sizeHint() const
    {
        return QSize(m_size, m_size);
    }
     
    void Fenetre::setButton()
    {
        m_buttonA->setText(QString::number(this->width()) + " et " + QString::number(this->height()));
    }
     
    void Fenetre::setSize()
    {
        int newSize = 500;
        m_size = newSize;
        this->updateGeometry();
    }
    Quand je clique sur le bouton B, le widget n'est pas redimensionner, pourquoi ? Suis-je obliger de passer par QWidget::resize() ?

    Merci d'avance pour votre aide.
    Dernière modification par johnlamericain ; 18/08/2011 à 00h52.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2013, 13h27
  2. Réponses: 0
    Dernier message: 08/03/2010, 15h19
  3. appel d'une fonction qui est dans une autre page
    Par guppy33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/08/2006, 12h05
  4. Réponses: 1
    Dernier message: 22/12/2005, 17h28
  5. Réponses: 7
    Dernier message: 25/10/2005, 15h19

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