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

Discussion :

[QGraphicsView] Impossible de peindre mon fond avec QLinearGradient [Graphics View]

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut [QGraphicsView] Impossible de peindre mon fond avec QLinearGradient
    hello,

    J'ai créer un QGraphicsView, sur lequel je souhaite appliquer un background dégradé.

    Pour cela j'ai utilisé QLinearGradient et la méthode setBackgoundBrush du graphics view.

    Cependant le fond de mon graphics view reste désespérément blanc.

    Le code en question (je poste tout car je ne sais pas encore trop ce qui est utile ou non) :

    Code dvcolorpicker.h : 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
     
    #ifndef DVPCOLORPICKER_H
    #define DVPCOLORPICKER_H
     
    #include <QWidget>
    #include <QtGui/QGraphicsView>
     
    namespace Ui {
        class DvpColorPicker;
    }
     
    class DvpColorPicker : public QWidget
    {
        Q_OBJECT
     
    public:
        explicit DvpColorPicker(QWidget *parent = 0);
        ~DvpColorPicker();
        QGraphicsView *graphicsView;
     
    private:
        Ui::DvpColorPicker *ui;
     
    private slots:
    };
     
    #endif // DVPCOLORPICKER_H

    Code dvcolorpicker.cpp : 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
     
    #include "dvpcolorpicker.h"
    #include "ui_dvpcolorpicker.h"
     
    DvpColorPicker::DvpColorPicker(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::DvpColorPicker)
    {
        ui->setupUi(this);
     
        this->graphicsView = new QGraphicsView( this );
        this->graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
        this->graphicsView->setGeometry(QRect(10, 20, 341, 281));
     
            QLinearGradient degrade(0.0,0.0,
                                    0.0,
                                    200.0 );
            degrade.setColorAt(0, Qt::black);
            degrade.setColorAt(1, Qt::red);
            QBrush pinceau( degrade );
        this->graphicsView->setBackgroundBrush(pinceau);
     
        QMetaObject::connectSlotsByName(this);
     
    }
     
    DvpColorPicker::~DvpColorPicker()
    {
        delete ui;
    }


    Code ui_dvpcolorpicker.h : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    /********************************************************************************
    ** Form generated from reading UI file 'dvpcolorpicker.ui'
    **
    ** Created: Sat Aug 21 14:51:09 2010
    **      by: Qt User Interface Compiler version 4.6.3
    **
    ** WARNING! All changes made in this file will be lost when recompiling UI file!
    ********************************************************************************/
     
    #ifndef UI_DVPCOLORPICKER_H
    #define UI_DVPCOLORPICKER_H
     
    #include <QtCore/QVariant>
    #include <QtGui/QAction>
    #include <QtGui/QApplication>
    #include <QtGui/QButtonGroup>
    #include <QtGui/QHeaderView>
    #include <QtGui/QSlider>
    #include <QtGui/QWidget>
     
    QT_BEGIN_NAMESPACE
     
    class Ui_DvpColorPicker
    {
    public:
        QSlider *verticalSlider;
     
        void setupUi(QWidget *DvpColorPicker)
        {
            if (DvpColorPicker->objectName().isEmpty())
                DvpColorPicker->setObjectName(QString::fromUtf8("DvpColorPicker"));
            DvpColorPicker->resize(507, 378);
            DvpColorPicker->setMinimumSize(QSize(0, 0));
            verticalSlider = new QSlider(DvpColorPicker);
            verticalSlider->setObjectName(QString::fromUtf8("verticalSlider"));
            verticalSlider->setGeometry(QRect(360, 10, 21, 281));
            verticalSlider->setOrientation(Qt::Vertical);
     
            retranslateUi(DvpColorPicker);
     
            //QMetaObject::connectSlotsByName(DvpColorPicker);
        } // setupUi
     
        void retranslateUi(QWidget *DvpColorPicker)
        {
            DvpColorPicker->setWindowTitle(QApplication::translate("DvpColorPicker", "DvpColorPicker", 0, QApplication::UnicodeUTF8));
        } // retranslateUi
     
    };
     
    namespace Ui {
        class DvpColorPicker: public Ui_DvpColorPicker {};
    } // namespace Ui
     
    QT_END_NAMESPACE
     
    #endif // UI_DVPCOLORPICKER_H

    J'ai dû louper un truc assez gros, mais je sèche sévèrement, auriez vous une idée, s'il-vous-plait ?

    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    j'ai trouvé !

    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
    
    
        this->graphicsView = new ColorPickerView( this );
        this->graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
        this->graphicsView->setGeometry(QRect(10, 20, 341, 281));
        this->graphicsView->viewport()->setAutoFillBackground(false);
    /* */
            QLinearGradient degrade(0.0,0.0,
                                    0.0,
                                    200.0 );
            degrade.setColorAt(0, Qt::black);
            degrade.setColorAt(1, Qt::red);
            QBrush pinceau( degrade );
            QGraphicsScene* scene = new QGraphicsScene();
                scene->setBackgroundBrush(pinceau);
    
                this->graphicsView->setScene(scene);
    Par contre je ne comprend pas l'utilité de cette méthode setBackgroundbrush sur graphicsview si je dois le définir sur la scene attachée... faudrqit que je fasse des tests j'imagine..

    a plus

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Tu n'es pas obligé de définir ton background dans la scène. Ce que tu faisais étais correcte. Par contre, il faut ajouter une scène à ta vue pour que ton background s'affiche.

    Ajouter par exemple ceci à la fin de ton constructeur de DvpColorPicker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        QGraphicsScene* scene = new QGraphicsScene();
        graphicsView->setScene(scene);

    La raison (a priori) est qu'une vue est un widget qui permet d'afficher une scene (regarde le design pattern MVC model-view-control)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    hello,

    yes merci : )

    a plus

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

Discussions similaires

  1. Impossible de voir mon SSID avec ma clé wifi
    Par jacko842 dans le forum Windows 8
    Réponses: 1
    Dernier message: 26/12/2013, 20h51
  2. Impossible de démarrer mon application avec Tomcat
    Par momjunior dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 19/06/2013, 17h04
  3. impossible de centrer mon bouton avec la colonne, de même avec mon header
    Par gepeto33 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 09/09/2012, 15h18
  4. Impossible de placer mon fond d'écran correctement
    Par goku19 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 29/01/2012, 03h38
  5. Impossible de centrer mon site avec margin :auto;
    Par kate59 dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 04/02/2010, 17h41

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