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 :

problème d'update [Graphics View]


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Par défaut problème d'update
    Bonjour à tous,

    Je suis en train de faire une QGraphics view dans laquelle j'affiche une QGraphicsGridLayout remplie par des QGraphicsWidget, la construction est faite comme suit:

    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
     
    QWidget widget = new QWidget();
     
    mainVerticalLayout = new QVBoxLayout(widget);
     
    headerGraphicsView = new QGraphicsView(layoutWidget);
    [...]
    mainVerticalLayout->addWidget(headerGraphicsView);
     
    mainView = new QGraphicsView(widget);
     
    scene = new QGraphicsScene(mainView->sceneRect(), mainView);
    mainView->setScene(scene);
     
    containerWidget = new QGraphicsWidget();
     
    gridLayout = new QGraphicsGridLayout(containerWidget);
     
    containerWidget->setLayout(gridLayout);
    scene->addItem(containerWidget);
     
    int i = 0, row = 0, col = 0;
    for (i = 0; i < itemsList.size(); i++)
    {
    	gridLayout->addItem(itemList[i], row, col);
    	if (col == MOSAIC_WIDTH - 1)
    	{
    		row++;
    		col = 0;
    	}
    	else
    	{
    		col++;
    	}
    }
     
    footerGraphicsView = new QGraphicsView(widget);
    [...]
    mainVerticalLayout->addWidget(footerGraphicsView);
    Et la mise à jour se fait comme suit:

    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
    int i = 0;
    // Je vire les items du layout
    for (i = gridLayout->count() - 1; i >= 0; i--)
    {
    QGraphicsWidget* item = dynamic_cast<QGraphicsWidget*>(gridLayout->itemAt(i));
    	if (item != NULL)
    	{
    		gridLayout->removeAt(i);
    		scene->removeItem(item);
    	}
    }
     
    row = 0, col = 0;
    // Puis je le remplie avec les nouveaux
    for (i = 0; i < itemsList.size(); i++)
    {
    	gridLayout->addItem(itemList[i], row, col);
    	if (col == MOSAIC_WIDTH - 1)
    	{
    		row++;
    		col = 0;
    	}
    	else
    	{
    		col++;
    	}
    }
    Mais j'ai un problème lorsque je réduit le nombre d'items dans gridLayout lors de la mise à jour, la taille reste aux valeurs de la plus grande taille que la scene ait eue (dans les screenshots seul le mainVerticalLayout est affiché pour un soucis de taille d'image):

    Si la plus grande taille était comme suit:



    Ensuite je réduit le nombre d'éléments, gridLayout semble étiré pour rentrer complètement dans la vue:



    Lors de la mise à jour j'ai essayé toutes sorte d'updates (update de la QGraphicsScene, update et updateGeometry de la QGraphicsView, ...) mais rien n'y fait.

    J'ai aussi essayé de delete/reconstruire le QGraphicsGridLayout, là le QGraphicsGridLayout n'est plus étiré mais la scrollbar est toujours comme pour la plus grande taille:



    Finalement j'ai essayé de delete/reconstruire la QGraphicsScene, là j'ai pareil qu'avec le dernier screenshot (layout correctement construit mais scrollbar toujours grande), et enfin delete/reconstruire la QGraphicsView et même comportement.

    Est-ce que quelqu'un a une idée de ce qu'il faut updater/faire pour que l'affichage soit correct?

    Merci.
    Gluttony.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    ce n'est peut etre pas la solution optimale mais tu peux faire un resize de ta graphicsview qui dépendra du nombre d'item restant

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Par défaut
    Merci atomicJo,

    Cette solution resize bien la view (j'ai essayé avec des valeurs en dure avant de faire mes calculs par rapport aux éléments) mais toujours le même problème.

    D'autres idées ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    toujours le meme problème?
    tu as donc une view à la bonne taille + des scrolls bar qui ne servent à rien ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Par défaut
    Nan, j'ai toujours les éléments écartés, si je resize la view par une taille plus petite que la fenêtre je vais avoir ça par exemple:



    Je pense en fait que c'est plutôt un fitInView qu'il faut jouer ou sur la scene qu'il faut jouer, je vais regarder ça.

    Gluttony.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Salut, essai de regarder les sizepolicy et alignement que te propose QGraphicsGridLayout.

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

Discussions similaires

  1. [MySQL] problème requête UPDATE
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 23/10/2005, 18h28
  2. problème de Update
    Par cyrill.gremaud dans le forum ASP
    Réponses: 7
    Dernier message: 29/08/2005, 20h58
  3. [C#] [Oracle] Problème d'Update
    Par _Air_ dans le forum Windows Forms
    Réponses: 12
    Dernier message: 06/04/2005, 13h56
  4. Problème requete update
    Par krfa1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/03/2005, 08h47
  5. problème pour updater une BD
    Par yoda_style dans le forum ASP
    Réponses: 6
    Dernier message: 17/03/2005, 10h56

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