Bonjour à tous,
J'ai un problème dans un programme qui utilise SFML 2.1 intégré dans une interface Qt5.
J'ai placé le QSFMLCanvas dans le layout d'un QStackedWidget, lui-même inséré dans le centralwidget d'un QMainWindow :
Sfml = new QSFMLCanvas(this);
widget_container = new QStackedWidget(this);
widget_container->addWidget(Sfml);
widget_container->setCurrentWidget(Sfml);
widget_container->layout()->setAlignment(widget_container,Qt::AlignCenter);
setCentralWidget(widget_container);
Sous linux (Fedora 18) cela fonctionne bien, le canvas est redimensionné en même temps que le QMainWindow.
Par contre, sous Windows 7, le canvas garde ça taille initiale et se positionne en bas à gauche du QMainWindow quand on le redimensionne.
J'ai tenté de voir ce qu'il se passait en mettant des prints de la taille du QWidget et de la Renderwindow dont hérite QSFMLCanvas dans la fonction resizeEvent() du QSFMLCanvas:
void QSFMLCanvas::resizeEvent(QResizeEvent *event)
{
std::cout << size().width() <<" " << size().height()
<< " " << getSize().x << " " << getSize().y << std::endl;
}
et voilà un exemple de ce que ça me donne en sortie :
815 639 700 579
815 639 700 579
825 641 700 579
825 641 700 579
835 644 700 579
835 644 700 579
842 646 700 579
La taille du RenderWindow ne varie pas alors que le QWidget et bien redimensionné.
J'ai tenté de rajouter un setSize() dans la fontion resizeEvent() mais cela ne change absolument rien.
void QSFMLCanvas::resizeEvent(QResizeEvent *event)
{
setSize(sf::Vector2u(event->size().width(),event->size().height()));
std::cout << size().width() <<" " << size().height()
<< " " << getSize().x << " " << getSize().y << std::endl;
}
Si quelqu'un a une idée pour arranger cela, cela m'aiderait beaucoup
Merci d'avance,
daijin12