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:
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:
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:
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.