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 :

QLineEdit && mousePressEvent


Sujet :

Qt

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut QLineEdit && mousePressEvent
    Bonjour, mon probleme est le suivant : je voudrait recuperer la position de la souris suite a un click sur un QLineEdit, j'ai donc tenté de surcharge la class, mais je bloque voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class NQLineEdit : public QLineEdit
    {
    Q_OBJECT;
    public slots:
    void mousePressEvent ( QMouseEvent * event )
    {
    emit clicked();
    event->accept();
    }
    signals:
    void clicked();
    };
    Seulement voila je n'arrive pas a creer de type NQLineEdit, en effet si je fais pas exemple :
    NQLineEdit *test=new QLineEdit("test",QWidget);
    Le code ce compile mais :
    void mousePressEvent ( QMouseEvent * event ) Ne detecte pas les clicks sur test ET si j'esseye de connecter :
    connect(test, SIGNAL(clicked()), this, SLOT(marche()));
    Alors : Object::connect: No such signal QLineEdit::clicked()

    Conclusion de desespere un peu, et j'espere que vous pourrez m'aider.
    EN vous remerciant,
    Dory


    NB : Si j'initialise comme ceci :
    NQLineEdit *test=new NQLineEdit("test",QWidget); Alor le code ne ce compile pas...

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    1. mousePressEvent n'est pas un slot public dans les classes parentes, donc elle n'est pas reconnue comme étant la bonne.

    2. Tu n'instancies pas ta classe mais QLineEdit... :-/

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci de m'avoir repondu, toutefois je ne comprend pas bien:
    mousePressEvent n'est pas un slot public dans les classes parentes, donc elle n'est pas reconnue comme étant la bonne.
    Comment faire pour qu'elle soit reconnu alor ?



    2. Tu n'instancies pas ta classe mais QLineEdit... :-
    Oui mais comment faire ? mettre :
    NQLineEdit test = new NQLineEdit(....); ???
    Ceci ne ce compile pas....

    Pourrais tu me donner un peu de code stp ?

    Merci de m'aider...
    Dory,

  4. #4
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par Dory99 Voir le message
    Comment faire pour qu'elle soit reconnu alor ?
    Utiliser la même visibilité que dans la classe parente. Ca fait parti de la base du C++ ça

    Citation Envoyé par Dory99 Voir le message
    Oui mais comment faire ? mettre :
    NQLineEdit test = new NQLineEdit(....); ???
    Ceci ne ce compile pas....
    Ah, peut-être qu'on va avoir le vrai problème. Quel est le message que tu obtiens?

    Citation Envoyé par Dory99 Voir le message
    Pourrais tu me donner un peu de code stp ?
    Non.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    NQLineEdit test = new NQLineEdit("qqsd",zoneCentrale);
    Voici les erreures qu'impliquent la ligne avant : (sachant que zone centrale est un QWidget)...
    FenPrincipale.cpp: In constructor «FenPrincipale::FenPrincipale()»:
    FenPrincipale.cpp:31: erreur: no matching function for call to «NQLineEdit::NQLineEdit(const char [5], QWidget*&)»
    FenPrincipale.h:9: note: candidats sont: NQLineEdit::NQLineEdit()
    FenPrincipale.h:9: note: NQLineEdit::NQLineEdit(const NQLineEdit&)


    Merci

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class NQLineEdit : public QLineEdit
    {
    Q_OBJECT;
    public slots:
    void mousePressEvent ( QMouseEvent * event )
    {
    emit clicked();
    event->accept();
    }
    signals:
    void clicked();
    };
    mais où est charlie???euh les constructeur???

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    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
    class NQLineEdit : public QLineEdit
    {
    Q_OBJECT;
    public:
    NQLineEdit();
     
    public slots:
    void mousePressEvent ( QMouseEvent * event )
    {
    emit clicked();
    event->accept();
    }
    signals:
    void clicked();
    };
    #endif
    Comme ceci ? mais le probleme c'estque dois je mettre dans NQLineEdit() ???

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Un appel au constructeur de QLineEdit ?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,
    Je suis desolé mais il dois y a quelque chose que je ne comprend pas...
    Mon NQLineEdit.h est donc juste ?
    Dans les NQLineEdit.cpp je met seulement un appel au constructeur de QLineEdit donc : QLineEdit ( QWidget * parent = 0 )

    Ensuite j'initialise une variable en faisait NQLineEdit test= new NQLineEdit(Qwidget) et quand je cliquais sur ce nouveau NQLineEdit le signal clicked sera emit ????

    Merci de m'aider,
    Dory,

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