Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: nico69 le Novembre 29, 2014, 02:01:43 pm

Titre: Qt+SFML widget resize
Posté par: nico69 le Novembre 29, 2014, 02:01:43 pm
Bonjour,

J'ai, comme beaucoup, suivis ce document pour intégrer une surface SFML dans une fenêtre Qt.
http://becomingindiedev.blogspot.fr/2013/10/qt-5-and-sfml-20-integration.html
Que j'ai modifié pour que la surface agisse comme un widget classique, et non placé de façon rigide.

J'ai remarqué, que lorsque l'on redimensionne la fenêtre, celle de rendu ne change pas de taille.
La seule façon de faire que j'ai trouvé, pour que la surface SFML soit redimensionné est de la recréer lorsque le widget est redimensionné (RenderWindow::setSize() ne donne pas l'effet souhaité, et peut freeze le programme).
void QSFMLCanvas::resizeEvent(QResizeEvent * event)
{
    QWidget::resizeEvent(event);
    sf::View lastV(RenderWindow::getView());
    RenderWindow::close();
    RenderWindow::create(reinterpret_cast<sf::WindowHandle>(winId()));
    sf::View v(RenderWindow::getView());
    v.setCenter(lastV.getCenter());
    RenderWindow::setView(v);
}

Par contre, cette façon de faire génère une grosse fuite de mémoire lors du redimensionnement, comme si la surface précédente n'est pas détruite.
Comment éviter cette fuite ?

Merci

nico