IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Qt+Ogre avec onglets


Sujet :

Qt

  1. #1
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut Qt+Ogre avec onglets
    salut à tous,

    j'ai un problème avec une fenetre Qt avec des onglets :

    onglet 1 : un widget ogre
    onglet 2 : pleins de widget (boutons, checkbox, etc...)
    onglet 3 : idem

    quand je suis sur l'onglet 1, et que je clique sur un autre onglet, la fenetre ogre reste affichée!

    Est-ce un probleme de raffraichissement, ou juste un hide() lors du changement d'onglet suffit?

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut,
    y as un tuto pour integrer ogre dans QT
    http://irmatden.developpez.com/tutor...ation-ogre-qt/
    vérifie si tu fait la même chose

  3. #3
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    merci pour ta réponse, mais je ne vois pas trop en quoi ça m'aide...
    Mon problème ne vient pas d'essayer de faire afficher du ogre, mais de le faire disparaitre!

    J'ai un connect avec le signal changedIndex() qui fonctionne très bien, sauf que ma vue ogre ne disparait pas! Par contre, en rajoutant un hide dans le constructeur de ma vue Ogre, quand je clique sur mon onglet 1, ma vue apparait! mais après, elle reste pour l'éternité...

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par shams Voir le message
    merci pour ta réponse, mais je ne vois pas trop en quoi ça m'aide...
    Mon problème ne vient pas d'essayer de faire afficher du ogre, mais de le faire disparaitre!
    Ben je ne sais pas comment tu as intégrer orgre dans Qt. DOnc déjà verifie si tu fait pareil

  5. #5
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    haha! oui en effet, c'est logique...
    Donc pour te répondre j'ai pas suivi ce tuto, mais le principe est le même.
    J'ai un ogreWidget, puis un ogreScene qui derive de ce widget et que j'ai ajouté à mes fenetres Qt.

    EDIT : j'ai pas de souci pour bouger, me déplacer, afficher dans ma scene ogre, ca marche tres bien

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    En faite c'est surtout l'intégration de orgre dans une widget par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifdef Q_WS_WIN
        widgetHandle = (size_t)((HWND)winId());
    #else
        QWidget *q_parent = dynamic_cast <QWidget *> (parent());
        QX11Info xInfo = x11Info();
     
        widgetHandle = Ogre::StringConverter::toString ((unsigned long)xInfo.display()) +
            ":" + Ogre::StringConverter::toString ((unsigned int)xInfo.screen()) +
            ":" + Ogre::StringConverter::toString ((unsigned long)q_parent->winId());
    #endif
        viewConfig["externalWindowHandle"] = Ogre::StringConverter::toString(widgetHandle);
        ogreRenderWindow = ogreRoot->createRenderWindow("Ogre rendering window",
    		width(), height(), false, &viewConfig);
    ou tu passe Id de la widget d'affichage à orgre.

    Après c'est bizarre, c'est comme tout widget, si elle ne doit pas être affiché, tu n'est pas sensé passer par le paintevent... Or apparemment tu y passe...

    Après, je ne connait pas beaucoup ogre...
    Peut tu mettre le code de ton ogreWidget?? au moins les parties initialisations.
    On pourra peut être t'aider

  7. #7
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    c'est le widget trouvé sur le site officiel de Ogre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    ///
    /// Create the Ogre render window
    ///
    void QOgreWidget::createRenderWindow(void) {
    	Ogre::NameValuePairList params;
     
    	if (m_renderWindow)
    		return;
    	if (!m_ogreRoot)
    		configure();
     
    #if defined(Q_WS_MAC) || defined(Q_WS_WIN)
    	params["externalWindowHandle"] = Ogre::StringConverter::toString((size_t) winId());
    #else
        QX11Info info = x11Info();
    	Ogre::String winHandle;
    	winHandle  = Ogre::StringConverter::toString((unsigned long)(info.display()));
    	winHandle += ":";
    	winHandle += Ogre::StringConverter::toString((unsigned int)(info.screen()));
    	winHandle += ":";
    	winHandle += Ogre::StringConverter::toString((unsigned long)(this->parentWidget()->winId()));
    	params["parentWindowHandle"] = winHandle;
    #endif
     
    	m_renderWindow = m_ogreRoot->createRenderWindow("View" + Ogre::StringConverter::toString((unsigned long) this),
    													width(), height(), false, &params);
     
    #if defined(Q_WS_MAC)
    	// store context for hack
    	Ogre::OSXContext *context;
    	m_renderWindow->getCustomAttribute("GLCONTEXT", &context);
    	context->setCurrent();
    	m_aglContext = aglGetCurrentContext();
    	resizeRenderWindow();
    #endif
     
    	// take over ogre window
    #if !defined(Q_WS_MAC)
    	WId ogreWinId = 0x0;
    	m_renderWindow->getCustomAttribute("WINDOW", &ogreWinId);
    	assert(ogreWinId);
    	create(ogreWinId);
    #endif
    }
    Humm, en fait, je me demande si ca vient pas de mon timer qui continue de tourner meme quand je suis pas dans l'onglet ogre... je vais faire des tests, mais si tu as des idées ou que tu veux voir une autre partie du code...

  8. #8
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    bon je ne trouve pas comment arreter mon timer...
    En fait, je ne repasse pas par le paint event quand je change d'onglet. C'est appelé seulement quand je me met sur l'onglet avec ogre...

    D'ailleurs, j'ai remarqué que l'affichage de mes éléments sur un autre onglet se faisait bien, mais c'est juste qu'il y a ogre devant!

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par shams Voir le message
    bon je ne trouve pas comment arreter mon timer...
    En fait, je ne repasse pas par le paint event quand je change d'onglet. C'est appelé seulement quand je me met sur l'onglet avec ogre...

    D'ailleurs, j'ai remarqué que l'affichage de mes éléments sur un autre onglet se faisait bien, mais c'est juste qu'il y a ogre devant!
    Tu peut peut être utiliser
    http://qt.developpez.com/doc/latest/...ml#isVisibleTo
    pour tester dans le paintevent si il faut dessiner ou non.

  10. #10
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    humm je sens que ca va être une erreur à la con ça...

    J'ai mis dans mon timer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isVisible())
    		cout << "on affiche" << endl;
    	else
    		cout << "on affiche pas" << endl;
    et quand je change d'onglet, mon timer (qui tourne toujours) indique bien "on affiche" quand je suis sur l'onglet avec ogre et "on affiche pas" quand je ne suis pas dessus".

    Ma fonction paint event c'est celle la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //-----------------------------------------------------------------
    void maClasse::paintEvent(QPaintEvent *) 
    {
    	if(!m_renderWindow) 
    	{
    		createRenderWindow();
    		setupResources();
    		setupScene();
    	}
    	std::cout << "PAINT EVENT" << std::endl;
    	update();
    }
    mais meme si je commente update, mis a part que ca se reactualise plus, j'ai toujours ma fenetre ogre... grrr

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Peut être plutôt un truc comme (a voir si l'autre que je t'ai donné n'est pas mieux.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void maClasse::paintEvent(QPaintEvent *) 
    {
    	if(isVisible()) 
    	{
    		createRenderWindow();
    		setupResources();
    		setupScene();
    	}
    	std::cout << "PAINT EVENT" << std::endl;
            update();
    }
    Pourquoi un update à la fin

  12. #12
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Peut être plutôt un truc comme (a voir si l'autre que je t'ai donné n'est pas mieux.)
    si j'enleve le test sur le renderWindow, ca fait une erreur quand je reviens sur mon onglet ogre parce que il dis qu'il y a deja un viewport etc... mais meme si je le laisse et que je l'encapsule avec le isVisible, ma fenetre ogre reste. En fait je devrais plutot dire "l'image" de mon widget reste car c'est comme si ca avait imprimé la fenetre Qt...

    De quel autre parles tu?
    EDIT : je suppose l'autre ogreWidget! scuse moi, fin de journée difficile
    Citation Envoyé par Mongaulois Voir le message
    Pourquoi un update à la fin
    heu... un résidu de divers test je suppose...:d

  13. #13
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    j'ai essayé avec l'initialisation du tuto, mais la grosse différence, c'est que ca me fait passer par QX11Info, et ca me fait une erreur! (incomplete initializer)

    Je suis sur mac, est-ce que c'est pour ca que tout merdouille...?

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par shams Voir le message
    De quel autre parles tu?
    http://qt.developpez.com/doc/latest/...ml#isVisibleTo

    Citation Envoyé par shams Voir le message
    j'ai essayé avec l'initialisation du tuto, mais la grosse différence, c'est que ca me fait passer par QX11Info, et ca me fait une erreur! (incomplete initializer)
    le tuto est pour linux et windows. Mais si tu as récupéré chez orgre, ce que tu fait doit être bon. Surtout que cela semble être identique.
    Citation Envoyé par shams Voir le message
    Je suis sur mac, est-ce que c'est pour ca que tout merdouille...?
    J'espère pas

    si j'enleve le test sur le renderWindow, ca fait une erreur quand je reviens sur mon onglet ogre parce que il dis qu'il y a deja un viewport
    Quand appel tu ?
    void QOgreWidget::createRenderWindow(void)

    c'est sensé être appeler qu'une seule fois et lors du premier show

  15. #15
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    Ben je comprend pas, c'est la SEULE méthode que tu m'as indiqué, non??

    Citation Envoyé par Mongaulois Voir le message
    le tuto est pour linux et windows. Mais si tu as récupéré chez orgre, ce que tu fait doit être bon. Surtout que cela semble être identique.
    a priori! :d

    Citation Envoyé par Mongaulois Voir le message
    J'espère pas
    moi non plus !!

    Citation Envoyé par Mongaulois Voir le message
    Quand appel tu ?
    void QOgreWidget::createRenderWindow(void)

    c'est sensé être appeler qu'une seule fois et lors du premier show
    Ben je l'appelle dans le paintEvent, je t'ai mis ma fonction juste au dessus. Et c'est bien pour ca que je fais un test pour ne l'appeler qu'une seule fois et que si je l'enlève ca marche plus et si je l'encapsule avec le test sur isVisible, bé ca me laisse tjs ma vue ogre perpétuellement...

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par shams Voir le message
    Ben je comprend pas, c'est la SEULE méthode que tu m'as indiqué, non??
    J'ai mal compris alors, dsl.

    Citation Envoyé par shams Voir le message
    Ben je l'appelle dans le paintEvent, je t'ai mis ma fonction juste au dessus. Et c'est bien pour ca que je fais un test pour ne l'appeler qu'une seule fois et que si je l'enlève ca marche plus et si je l'encapsule avec le test sur isVisible, bé ca me laisse tjs ma vue ogre perpétuellement...
    Je viens de comprendre ton paintevent
    Mais par contre où fait tu dessiner ogre??????
    il n'est pas dans le paintevent????

  17. #17
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    héhé! pas toujours facile de se mettre dans le code des autres! En tout cas merci beaucoup d'essayer de chercher si qui cloche, c'est très sympa de pas avoir abandonné !

    Dans mon paintEvent, j'appelle setupScene() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    void maClasse::setupScene(void) 
    {
    	m_sceneMgr = m_ogreRoot->createSceneManager(Ogre::ST_EXTERIOR_CLOSE);
     
    	// Create the camera
    	m_camera = m_sceneMgr->createCamera("PlayerCam");
    	m_camera->lookAt(Ogre::Vector3(0, 0, 0));
    	m_camera->setNearClipDistance(1);
    	m_camera->yaw(Ogre::Angle(-145.0));
    	m_camera->setPosition(300,300,300);
     
    	//création du camNode0
    	m_sceneNode = m_sceneMgr->getRootSceneNode()->createChildSceneNode("camNode0", Ogre::Vector3(0, 0, 0));
    	m_sceneNode = m_sceneNode->createChildSceneNode( "PitchNode0" );
    	m_sceneNode->attachObject( m_camera );
     
    	// Create one viewport, entire window
    	m_vp = m_renderWindow->addViewport(m_camera);
    	m_vp->setBackgroundColour(Ogre::ColourValue(5,10,200));
    	m_vp->setClearEveryFrame(true);
     
    	// RESSOURCE
    	Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
     
    	// SCENE
    	createScene();
    	Ogre::MaterialManager::getSingleton().setDefaultTextureFiltering(Ogre::TFO_BILINEAR);
    	Ogre::MaterialManager::getSingleton().setDefaultAnisotropy(1);
     
    	// Alter the camera aspect ratio to match the viewport
    	m_camera->setAspectRatio(Ogre::Real(m_vp->getActualWidth()) / Ogre::Real(m_vp->getActualHeight()));
     
    	startTimer(20);
    }
    puis mon createScene () qui est dans setupScene:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    void maClasse::createScene(void) 
    {
    	m_sceneMgr->setAmbientLight(Ogre::ColourValue(0.6, 0.6, 0.6));
     
    	//Lancé de rayon
    	m_raySceneQuery = m_sceneMgr->createRayQuery(Ogre::Ray());
     
    	//skyBox
    	m_sceneMgr->setSkyBox( true, "Examples/SpaceSkyBox", 5000, false);
     
    	// Setup the actual scene
    	Ogre::Light* l = m_sceneMgr->createLight("MainLight");
    	l->setPosition(0, 100, 500);
     
    	std::string terrain_cfg("Data/config/terrain.cfg");
    	m_sceneMgr->setWorldGeometry( terrain_cfg );
    	if (m_ogreRoot->getRenderSystem()->getCapabilities()->hasCapability(Ogre::RSC_INFINITE_FAR_PLANE))
    	{
        m_camera->setFarClipDistance(0);
    	}
     
    	//Récupération des infos de dimension du terrain dans le fichier terrain.cfg
    	Ogre::ConfigFile cf;
    	cf.load( "Data/config/terrain.cfg" );
    	m_terrainSizeX = atof( cf.getSetting( "PageWorldX" ).c_str() );
    	m_terrainSizeZ = atof( cf.getSetting( "PageWorldZ" ).c_str() );
     
    }

  18. #18
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    ca c'est les initialisations.
    Mais je parle de la mise à jour de ogre qui va dessiner sur la widget.
    Comme dans le tuto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void OgreWidget::paintEvent(QPaintEvent *e)
    {
        ogreRoot->_fireFrameStarted();
            ogreRenderWindow->update();
        ogreRoot->_fireFrameEnded();
     
        e->accept();
    }
    Comment utilise tu ton timer?

  19. #19
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut

    on va devenir fou avec cette histoire!

    alors maClasse derive du OgreWidget qui ressemble beaucoup au tuto. Dans mon OgreWidget, j'ai aussi un paintEvent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void QOgreWidget::paintEvent(QPaintEvent *) {
    	if (!m_renderWindow)
    		createRenderWindow();
     
    	update();
    }
    Ce que tu m'as mis, je l'ai dans la fonction update du OgreWidget qui est appelé dans le paintEvent du OgreWidget (et que j'avais mis aussi dans mon paintEvent de maClasse au début -> tu m'avais fait la remarque dessus!!):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void QOgreWidget::update(void) {
    	if (m_renderWindow) {
    		m_ogreRoot->_fireFrameStarted();
    		m_renderWindow->update();
    		m_ogreRoot->_fireFrameEnded();
    	}
    }
    Mais dans maClasse, j'ai réécris une fonction paintEvent (celle que je t'ai mis plus haut)...

    Mon timer il me sert juste a faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void O_SceneOgre::timerEvent(QTimerEvent *) 
    {
    	traitementDeplacement();
    	testPosCam();
    	updateStat();
    	update();
    	if (isVisible())
    		cout << "on affiche" << endl;
    	else
    		cout << "on affiche pas" << endl;
    }

  20. #20
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    voila ton problème tu as redefinie update
    http://qt.developpez.com/doc/latest/qwidget.html#update

    le timerEvent(QTimerEvent *) devrait appeler un update qui est va appeler paintevent.

    Enlève la redéfinition du update et met son code dans le paint event.
    .
    Ici a chaque fin du timer tu redessine orgre d'où ton problème

Discussions similaires

  1. [CSS] Problème avec onglets
    Par jehlg dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/03/2006, 11h15
  2. JTabbedPane avec onglets dynamique
    Par oOoOuuhmAn dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 18/03/2006, 16h23
  3. Probleme avec onglet et ChangeListener, help me
    Par Blast dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 07/02/2006, 16h29
  4. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46
  5. [W3C] CCS tabs, la navigation avec onglet.
    Par m@thieu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/01/2005, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo