Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Qt+SFML widget resize  (Lu 1802 fois)

0 Membres et 1 Invité sur ce sujet

nico69

  • Newbie
  • *
  • Messages: 22
    • Voir le profil
Qt+SFML widget resize
« 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