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 :

Promoted widget. Erreur de compilation


Sujet :

Qt

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Par défaut Promoted widget. Erreur de compilation
    J'ai essayé de résumer au maximum le problème...

    Projet sous QtCreator, basé sur une QDialog.
    A l'intérieur de cette QDialog, avec QtDesigner (intégré) je crée un widget de type QSpinBox que je promote en QSpinBoxColoured...

    la déclaration de la classe QSpinBoxColoured est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef QSPINBOXCOLOURED_H
    #define QSPINBOXCOLOURED_H
     
    #include <QSpinBox>
     
    class QSpinBoxColoured : public QSpinBox
    {
        Q_OBJECT
    public:
        QSpinBoxColoured(QWidget *&W): QSpinBox(W) {}
    };
     
    #endif // QSPINBOXCOLOURED_H
    Lors de la compilation, j'ai droit à l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ui_dialog.h: In member function `void Ui_DialogClass::setupUi(QDialog*)':
    ui_dialog.h:32: error: no matching function for call to `QSpinBoxColoured::QSpinBoxColoured(QDialog*&)'
    qspinboxcoloured.h:7: note: candidates are: QSpinBoxColoured::QSpinBoxColoured(const QSpinBoxColoured&)
    qspinboxcoloured.h:10: note: QSpinBoxColoured::QSpinBoxColoured(QWidget*&)
    lors de la compilation de la ligne (autogénérée) de ui_dialog.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        spinBox = new QSpinBoxColoured(DialogClass);
    Pourtant, une QDialog dérive d'un QWidget, donc un casting implicite devrait être fait... Une idée?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut
    C'est quoi ce "*&" ??? Je penses que ça vient d'ici !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Par défaut
    Pour BarBug: *& veut dire référence sur un pointeur... jette un oeil sur les headers de tout les widgets, tu verras qu'il y a toujours un constructeur de ce type... Le problème n'est pas là.

    La solution est d'ajouter un constructeur type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        QSpinBoxColoured(QDialog *&W): QSpinBox((QWidget *&)W) {}
    Mais pourquoi, encore une fois ce casting explicite (impératif, sinon l'erreur est reportée sur la QSpinBox), alors qu'une QDialog dérive d'un QWidget???

  4. #4
    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
    Citation Envoyé par deebou Voir le message
    Pour BarBug: *& veut dire référence sur un pointeur... jette un oeil sur les headers de tout les widgets, tu verras qu'il y a toujours un constructeur de ce type... Le problème n'est pas là.
    non.
    y as pas de &. De plus cela ne sert à rien de passer une référence sur un pointeur dans ton cas et c'est dangereux. D'où le warning du compilateur

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Par défaut Amende honorable...
    Ce que c'est d'être sur de soi... Pourtant, je l'ai pas inventé ce *&... Mais voila, d'abord je le retrouve plus, et en plus vous avez parfaitement raison.
    Pardon du temps passé à résoudre un faux problème, et merci.

    PS: je cours voir mon neurologue pour corriger mes hallus.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut
    Ouf, j'etais en train de retourner toutes le doc de Qt en train de me dire que j'avais vraiment rien mais rien compris au C++ !

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

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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