Projet

Général

Profil

Redimensionnement application Qt

Suite aux nombreux problèmes de redimensionnement d'une application durant un exercice, il a été conjointement décidé que :
  • la taille de la fenêtre peut être redimensionnée à la page d'accueil
  • la taille de la fenêtre est bloquée durant un exercice

Il est possible alors de sortir de l'exercice, revenir à l'accueil, et redimensionner la fenêtre.

Le code qui va suivre vous présente une façon de faire qui fonctionne (testée sur le Mulot :p ).
Dans le MainWindow.cpp de votre application, à l'appel de votre exercice, faites ceci (exemple tiré du Mulot):


    switch (numero)
    {
    case 1:
    {
        ExerciceSurvol *s = new ExerciceSurvol(m_abuleduaccueil);
            connect(s, SIGNAL(exerciceExited()), this, SLOT(exerciceExited()));
        exerciceEnCours = true;
        setFixedSize(this->width(), this->height()); // c'est ici qu'on interdit le redimensionnement
    }
    ....

La méthode setFixedSize() permet de bloquer le redimensionnement. La fenêtre peut toujours être déplacée.
Les paramètres this->width() et this->height() récupèrent respectivement la largeur et la hauteur de la fenêtre (ici la MainWindow).

Voila, la taille de votre application est désormais bloquée durant l'exercice.
Preuve que cela fonctionne, à l'exécution, le petit carré dans le coin supérieur haut (celui qui permet de maximiser la taille) a disparu.

Pour débloquer le redimensionnement, rien de plus simple :) !
Il suffit de rappeler la fonction setFixedSize() avec comme paramètre la macro QWIDGETSIZE_MAX.
En effet, dans Qt, QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX) est la taille maximale autorisée pour un objet QWidget.

void MainWindow::exerciceExited()
{
    exerciceEnCours = false;
    setFixedSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); // On autorise le redimensionnement
    show();
}

Voila, ceci devrait fonctionner dans vos futures applications.
Bon test !

Redmine Appliance - Powered by TurnKey Linux