Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.4.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Animations et mainLayout

Bonjour,

j'ai essayé tout récemment la classe QPropertyAnimation en me basant sur l'exemple de la doc. J'ai donc créé un nouveau projet en partant d'une QMainWindow classique possédant un layout horizontal. J'ai ajouté dans ce layout (le mainLayout) trois QPushButton.

J'ai ajouté deux animations aux deux derniers boutons pour que lorsque je clic sur le premier des trois boutons, ces 2 derniers se retrouvent en haut à gauche de la fenêtre :
void MainWindow::on_button_clicked()
{
QRect startRect;
QRect endRect;

QPropertyAnimation *animation2 = new QPropertyAnimation(ui->button2, "geometry");
QPropertyAnimation *animation3 = new QPropertyAnimation(ui->button3, "geometry");

startRect=ui->button2->geometry();
endRect = QRect(0,50, 80, 25);
animation2->setDuration(5000);
animation2->setStartValue(startRect);
animation2->setEndValue(endRect);
animation2->setEasingCurve(QEasingCurve::OutBounce);

startRect=ui->button3->geometry();
endRect = QRect(85,50, 80, 25);
animation3->setDuration(5000);
animation3->setStartValue(startRect);
animation3->setEndValue(endRect);
animation3->setEasingCurve(QEasingCurve::OutBounce);

animation2->start(QAbstractAnimation::DeleteWhenStopped);
animation3->start(QAbstractAnimation::DeleteWhenStopped);
}
Ça fonctionne parfaitement, mais lorsque je redimensionne la fenêtre, le layout horizontal (le mainLayout) reprend le dessus et redimensionne mes 3 boutons comme il se doit en les réalignant comme ils étaient au lancement de l'application. Je comprend très bien la réaction et pense que c'est normal, mais comment devrais-je gérer cela pour que mes boutons restent à leurs place.

Solutions :
1) Ne pas faire d'animations à l'intérieur d'un layout ? (utiliser des valeurs fixes ...) --> ne plus utiliser les QLayout si je veux animer un widget
2) Utiliser un proxy, ou que sais-je, qui viendrait s'intercaler entre le moment où la fenêtre est redimensionnée et le moment ou mes QPushButton reçoivent leur nouvelle "geometry" = position + size. Afin de modifier cette "geometry" comme je le souhaite
3) ??

Auriez vous un avis sur l'utilisation des Layout avec les animations ? Une préférence pour une des solutions(arguments à l'appuis), d'autres solutions ? :)

Réponses

Connectez-vous ou Inscrivez-vous pour répondre.