Redimensionner un widget en fonction du widget conteneur
Bonjour à tous,
Je vous expose mon problème.
J'ai un widget (QWidget) qui contient un Layout (QVBoxLayout) et ce layout contient un widget OpenGL (QGLWiget) et un QPushButton.
J'aimerais que lorsque la fenêtre principale est redimensionnée, alors le widget QGLWidget soit redimensionné en conséquence. Car sinon le QGLWidget reste avec une taille fixe alors que la Widget conteneur est redimensionné...
J'ai trouvé la méthode void QWidget::resizeEvent(QResizeEvent*) et j'ai essayé de faire quelque chose.
Voici quelques bouts de monde code, vous verrez ce que j'ai essayé de faire dans la méthode MainWindow::resizeEvent(QResizeEvent*) pour changer la taille du widget QGLWidget. Je tente un setFixedSize(...) pour assigner la nouvelle taille. Seulement la fenêtre se redimensionne bien toute seule mais à l'infini, ce qui fait planter mon application au final.
Le problème peut venir du setFixedSize() étant donné que je suis dans un layout et que normalement les widget dans les layouts se redimensionnent avec la fenêtre. Mais si je ne mets pas de setFixedSize() à l'initialisation le widget n'est pas affiché.
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
|
/* Classe MainWindow, classe qui contient le layout */
#include <QWidget>
#include <QResizeEvent>
#include "layout.h"
class MainWindow : public QWidget
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
private:
Layout *layout;
void resizeEvent(QResizeEvent *);
signals:
public slots:
};
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent)
{
this->layout = new Layout(this);
this->setLayout(this->layout);
this->setWindowTitle(QString("My App"));
}
void MainWindow::resizeEvent(QResizeEvent * event)
{
SceneDisplayer *scene = this->layout->getGlScene();
scene->resizeGL(this->width(), this->height());
//scene->setFixedSize(width(), height());
} |
Si quelqu'un a la solution ou même une idée de solution ça m'aidera sûrement !
J'imagine que c'est quelque chose de tout bête mais ça m'échappe...
Merci d'avance ! :)