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 :

[Graphics View Framework] Intégration dans un layout


Sujet :

Qt

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut [Graphics View Framework] Intégration dans un layout
    Bonjour à tous,

    J'utilise le Framework Graphic View de QT pour de l'affichage graphique, mais j'ai un problème pour l'intégration dans un conteneur.
    J'ai créé une scène puis j'ai associé sa visualisation (view). J'arrive très bien à le faire fonctionner en faisant simplement show mais ici j'ai besoin de l'ajouter à un grid, Hbox ou Vbox, le problème est que ça n'affiche plus rien dès que je l'ajoute à un layout. Voici le code :

    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
    QPushButton *quit = new QPushButton(tr("Quit"))
     
         QGraphicsScene scene;
         QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100));
         scene.addLine(0, 0, 10, 8);
         scene.addText("Hello, world!");
     
         QGraphicsView *view = new QGraphicsView(&scene);
         //view->show();
     
         connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
     
        QGridLayout *grid = new QGridLayout;
        grid->addWidget(view, 0, 0);
        grid->addWidget(quit, 0, 1);
        setLayout(grid);
    J'espère avoir été clair ^^

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    bonjour;
    tu pourrait pas ajouter un QWidget comme paren t de QGraphicsView
    ensuite tu rajoute le QWidget en question au layout
    Ensuite appeler la méthode show()
    If you type Google into Google, you Can break the internet" - The IT Crowd

  3. #3
    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 black is beautiful Voir le message
    J'utilise le Framework Graphic View de QT
    Qt et non QT

    Citation Envoyé par black is beautiful Voir le message
    le problème est que ça n'affiche plus rien dès que je l'ajoute à un layout
    C'est a dire?
    Tu ne voit pas ton QGraphicsView ou rien n'est dessiné dedans?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    Rien n'est dessiné dedans je vois juste un carré blanc qui se redimensionne avec la fenêtre.

    buggen25, j'ai essayé avec un widget intermédiaire mais j'ai toujours un rectangle blanc.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    Ce n'est pas un rafraichissement qui manque ?
    J'ai essayé update ou show pour view mais rien n'y fait.

  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
    tu pourrais faire un exemple compilable?

  7. #7
    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

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    Je vais regarder du côté de ces codes, mais en attendant voici le constructeur de mon widget c_map :

    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
    c_map::c_map(QWidget *parent)
         : QWidget(parent)
    {
         QPushButton *quit = new QPushButton(tr("Quit"));
         quit->setFont(QFont("Times", 18, QFont::Bold));
     
         QLCDNumber *lcd = new QLCDNumber(2);
         lcd->setSegmentStyle(QLCDNumber::Filled);
     
         QSlider *slider = new QSlider(Qt::Horizontal);
         slider->setRange(0, 99);
         slider->setValue(0);
     
         QGraphicsScene scene(this);
         QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100));
         scene.addLine(0, 0, 10, 8);
         scene.addText("Hello, world!");
     
         QGraphicsView *view = new QGraphicsView(&scene,this);
     
         connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
         connect(slider, SIGNAL(valueChanged(int)),lcd, SLOT(display(int)));
     
         QVBoxLayout *layout = new QVBoxLayout;
         layout->addWidget(quit);
         layout->addWidget(lcd);
         layout->addWidget(slider);
         layout->addWidget(view);
         setLayout(layout);
     
         show();
    }
    Ça m'affiche donc un widget avec le bouton, le slide et le curseur mais en dessous c'est un carré blanc...

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    Même en m'aidant de ces exemples je n'arrive pas à trouver mon erreur. Je crée maintenant une MainWindow et je défini le widget comme le widget central de la fenêtre, mais ça ne marche toujours pas...

    Je suis certain que c'est juste un petit détail mais je ne trouve pas ce que c'est, personne n'a une idée svp ?

  10. #10
    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
    a ton avis qu'elle est la durée de vie de scene
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    c_map::c_map(QWidget *parent)
         : QWidget(parent)
    {
       ...
         QGraphicsScene scene(this);
       ... 
    }

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    Ouah, nickel ça marche enfin... Merci beaucoup, ça faisait tellement longtemps que je bloquais là dessus. Comme quoi le copier-coller est vraiment mauvais parfois.

    Encore merci

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Salut, j'ai le même problème mais je ne comprend pas la solution , Arthur tu pourrais m'expliquer ?

  13. #13
    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 NioX5199 Voir le message
    Salut, j'ai le même problème mais je ne comprend pas la solution , Arthur tu pourrais m'expliquer ?
    si tu as le même problème que black is beautiful, essaie de répondre à ma question et tu comprendra surement le problème

  14. #14
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    QGraphicsScene scene(this);
    a durée de ve se limite au constructeur Non, il faut donc le declarer comme membre ???
    If you type Google into Google, you Can break the internet" - The IT Crowd

  15. #15
    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 buggen25 Voir le message
    QGraphicsScene scene(this);
    a durée de ve se limite au constructeur Non,
    scene se retrouve sétruit à la fin du con,structeur donc on ne risque pas d'afficher quelque chose

    Citation Envoyé par buggen25 Voir le message
    il faut donc le declarer comme membre ???
    C'est plutôt une allocation dynamique qu'il faut.
    Après membre ou pas membre telle est la question
    tout dépend

  16. #16
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par yan Voir le message
    scene se retrouve sétruit à la fin du con,structeur donc on ne risque pas d'afficher quelque chose
    C'est plutôt une allocation dynamique qu'il faut.
    Après membre ou pas membre telle est la question
    tout dépend
    ça depend de la conception, suposant que la classe c_map est composé par plusieurs classes dont une classe QGraphicsScene on aura donc une relation de composition (et non une relation d'aggregation), donc l'existence de l'objet QGraphicsScene depend de celle de c_map, d'ou l'implémentation suivante :
    Dans la classe c_map
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QGraphicsScene *mGS;
    et dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mGS = new QGraphicsScene(this);
    et dans le destructeur, on delete l'objet ou pas(composition), Qt s'enchargera (je lai lu dans un livre), j'ai placé ça moi

    ps : le reste c'est juste une histoire de mauvais karma
    If you type Google into Google, you Can break the internet" - The IT Crowd

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Hudson] Intégration de test Framework Q7 dans hudson
    Par developper86 dans le forum Intégration Continue
    Réponses: 5
    Dernier message: 14/06/2013, 12h03
  2. Réponses: 2
    Dernier message: 29/10/2010, 15h17
  3. la recharge d'un svg dans le système graphics view
    Par lansher1985 dans le forum Qt
    Réponses: 2
    Dernier message: 21/07/2009, 15h09
  4. Polygone dans un Graphics View
    Par rambc dans le forum PyQt
    Réponses: 1
    Dernier message: 26/08/2008, 17h08

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