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 :

Disparition du fond avec Q_OBJECT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 122
    Par défaut Disparition du fond avec Q_OBJECT
    J'ai un menu avec un fond et trois boutons. Quand j'ajoute Q_OBJECT à ma classe afin de faire des slots perso mon fond ne s'affiche plus. Si je retire Q_OBJECT mon fond reste.

    J'ai essayer de placer à différent endroit le chargement de mon fond mais ça ne change rien.

    ma classe :
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class MaFenetre : public QWidget
    {
        Q_OBJECT
    public slots:
        void DeleteButton();
    private:
        QPushButton * classique, * francais, * quitter;
    public:
        MaFenetre();
        ~MaFenetre();
        //void DeleteButton();
     
    };

    Mon constructeur :
    Code c++ : 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
     
     
    MaFenetre::MaFenetre() : QWidget()
    {
     
        setFixedSize(500, 500);
        this->setStyleSheet("background-image:url(solitaire-fond.png);");
     
        //Création du bouton pour le plateau classique
        classique = new QPushButton("      classique", this);
     
            classique->setFont(QFont("Blackadder ITC", 23, QFont::Bold));
            classique->setCursor(Qt::PointingHandCursor);
            classique->setIcon(QIcon("smiley.png"));
            classique->resize(164,45);
            classique->move(200, 100);
     
        //Création du bouton pour le plateau français
        francais = new QPushButton("      francais", this);
     
        francais->setFont(QFont("Blackadder ITC", 23, QFont::Bold));
            francais->setCursor(Qt::PointingHandCursor);
            francais->setIcon(QIcon("smiley.png"));
            francais->resize(164,45);
            francais->move(200, 200);
     
        //Création du bouton pour quitter
        quitter = new QPushButton("      &quitter", this);
     
            quitter->setFont(QFont("Blackadder ITC", 23, QFont::Bold));
            quitter->setCursor(Qt::PointingHandCursor);
            quitter->setIcon(QIcon("smiley.png"));
            quitter->resize(164,45);
            quitter->move(200, 300);
     
        //Ajout des fond aux boutons
        classique->setStyleSheet("QWidget{background-image:url(boutton_1.png);}");
        francais->setStyleSheet("QWidget{background-image:url(boutton_2.png);}");
        quitter->setStyleSheet("QWidget{background-image:url(boutton_quit.png);}");
     
        //Création de la connection du bouton quitter avec la fonction système quitter
        QObject::connect(quitter, SIGNAL(clicked()), qApp, SLOT(quit()));
        QObject::connect(classique, SIGNAL(clicked()), this, SLOT(DeleteButton()));
     
    }

    Pour info la fonction appelé sur le clic n'est là que pour tester que le slot fonctionne ^^.

    Donc si quelqu'un sait pourquoi mon fond disparait comme par magie je suis preneur.

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Regarde la doc, elle peut t'aider : http://qt.developpez.com/doc/latest/...qwidget-widget

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 122
    Par défaut
    Merci mais c'est de là que vient ma création de fond .

    Non ce que je me demande c'est pourquoi l'ajout de la macro Q_OBJECT, rend inefficace mon style pour ma fenêtre. Surtout que ça fonctionne toujours pour les boutons .

  4. #4
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par Shr3ck Voir le message
    Merci mais c'est de là que vient ma création de fond .

    Non ce que je me demande c'est pourquoi l'ajout de la macro Q_OBJECT, rend inefficace mon style pour ma fenêtre. Surtout que ça fonctionne toujours pour les boutons .
    Hum tu es sur ?

    Citation Envoyé par doc
    Supports only the background, background-clip and background-origin properties.
    Hors toi tu utilises :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    background-image:url(solitaire-fond.png);
    Et je ne vois aucune réimplémentation de paintEvent(QPaintEvent *) dans ton code.

    Après je peux me tromper, je n'ai fait que lire la doc.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 122
    Par défaut
    Supports only the background, background-clip and background-origin properties.
    En effet met quand on regarde dans la doc à background on a :

    Example:

    QLabel {
    background-image: url(dense6pattern.png);
    background-repeat: repeat-xy;
    }
    soit ce que j'utilise. En plus le problème ne doit pas venir de " background-image: url(image.png);" car si je retire la macro mon fond s'affiche.

    Par contre :
    Citation Envoyé par johnlamericain
    Et je ne vois aucune réimplémentation de paintEvent(QPaintEvent *) dans ton code.
    Il se peut en effet qu'il me manque cela. Par contre je ne sais pas du tout pourquoi il faut faire une réimplémentation et comment faire cela.

  6. #6
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par Shr3ck Voir le message
    Il se peut en effet qu'il me manque cela. Par contre je ne sais pas du tout pourquoi il faut faire une réimplémentation et comment faire cela.
    Rajoute dans ton code .cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     void MaFenetre::paintEvent(QPaintEvent *)
     {
         QStyleOption opt;
         opt.init(this);
         QPainter p(this);
         style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
     }
    N'oublie pas la déclaration dans le .h ! Et ça devrait marcher

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

Discussions similaires

  1. Problème de disparition de "bodies" avec la synchro
    Par VinmaDev dans le forum BOUML
    Réponses: 4
    Dernier message: 23/05/2007, 19h40
  2. [CSS] image de fond avec barre de navigation
    Par speedylol dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 29/10/2006, 13h46
  3. Décalage de l'image de fond avec firefox
    Par raphio000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 03/08/2006, 00h08
  4. [CSS] Disparition de div avec IE
    Par galette dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 11/05/2006, 13h05
  5. Réponses: 1
    Dernier message: 06/12/2005, 22h23

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