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'affichage avec le fond


Sujet :

Qt

  1. #1
    Membre averti Avatar de corentin59
    Profil pro
    Inscrit en
    octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2006
    Messages : 462
    Points : 439
    Points
    439
    Par défaut Problème d'affichage avec le fond
    Bonjour,

    j'ai dérivé la classe QGraphicView afin de pouvoir redéfinir le fond. Voici le code de la méthode drawBackground (je veux faire un quadrillage).

    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
    45
    46
    47
    48
     
    void GraphicsView::drawBackground(QPainter* painter, const QRectF& rect)
    {
        // Space between lines
        const int space = qRound(50.0 / m_Scale);
        const int startH = qCeil(rect.top() / space);
        const int endH = qFloor(rect.bottom() / space);
        const int startV = qCeil(rect.left() / space);
        const int endV = qFloor(rect.right() / space);
     
        QVector<QLineF> linesMain;
        QVector<QLineF> linesSecond;
     
        // Horizontal lines
        for (int i=startH;i<=endH;i++)
        {
            int y = i * space;
     
            if ( i==0)
            {
                linesMain.push_back(QLineF(rect.left(), y, rect.right(), y));
            }
            else
            {
                linesSecond.push_back(QLineF(rect.left(), y, rect.right(), y));
            }
        }
     
        // Vertical lines
        for (int j=startV;j<=endV;j++)
        {
            int x = j * space;
     
            if ( j==0)
            {
                linesMain.push_back(QLineF(x, rect.top(), x, rect.bottom()-fontSize));
            }
            else
            {
                linesSecond.push_back(QLineF(x, rect.top(), x, rect.bottom()-fontSize));
            }
        }
     
        painter->setPen(m_PenMainAxis);
        painter->drawLines(linesMain);
        painter->setPen(m_PenSecondAxis);
        painter->drawLines(linesSecond);
    }
    Nom : Capture d’écran du 2021-02-20 15-15-15.png
Affichages : 37
Taille : 3,0 Ko
    Le problème, c'est que j'ai un bug d'affichage dès que j'ajoute un QGraphicsRectItem à la scène et que je le fait bouger à la souris (cf image jointe).

    Pourriez-vous m'aider à corriger ce problème ?
    Merci

  2. #2
    Membre averti Avatar de corentin59
    Profil pro
    Inscrit en
    octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2006
    Messages : 462
    Points : 439
    Points
    439
    Par défaut
    En fait, il suffisait de mettre le fond en cache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setCacheMode(QGraphicsView::CacheBackground);
    Par contre, j'ai une autre question : pourquoi peut-on définir le fond en réécrivant la méthode drawBackground de QGraphicsView et de QGraphicsScene ? est-ce équivalent ou vaut-il mieux en privilégier un par rapport à l'autre ?

Discussions similaires

  1. Problème d'affichage avec IE
    Par sheepk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/11/2005, 14h00
  2. Réponses: 6
    Dernier message: 19/05/2005, 12h06
  3. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 19h30
  4. Réponses: 6
    Dernier message: 19/10/2004, 14h46
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 17h59

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