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 :

Manipulation des QMouseEvent


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Par défaut Manipulation des QMouseEvent
    Bonjour,

    Mon objectif est de capter la position de la souris dans une fenêtre QWebView de WebKit et l'afficher à tout instant. Les erreurs affichiée lors de la compilation, c'est en rapport avec le QLineEdit et le QBoxLayout. Peut-être que je les utilise mal. Quelqu'un pourrait-t-il m'aider? 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
    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
     
    #include <QtGui/QApplication>
    #include <QtWebKit>
    #include <QtGui/QMouseEvent>
    #include <QtGui/QLineEdit>
    #include <QtGui/QBoxLayout>
    #include <QObject>
    #include "Window.h"
     
    FenPrincipale::FenPrincipale(){
        QWebView *view = new QWebView();
        view->load(QUrl("http://127.0.0.1/TAJP/"));
        view->show();
        QObject::connect(view, SIGNAL(mouseMoveEvent(event)), this, SLOT(displayPosition()));
     
        QWidget *DisplayPos= new QWidget(this);
        editPosX= new QLineEdit;
        editPosY= new QLineEdit;
        QBoxLayout *Box= new QBoxLayout;
        Box->addWidget(editPosX);
        Box->addWidget(editPosY);
        DisplayPos->setLayout(Box);
    }
     
    void FenPrincipale::mouseMoveEvent ( QMouseEvent * event )
    {
        posX = event->x();
        posY = event->y();
        QWidget::mouseMoveEvent(event);
    }
     
    void FenPrincipale::displayPosition(){
        while(true)
           {
                editPosX->setText(QString::number(posX));
                editPosY->setText(QString::number(posY));
           }
    }

  2. #2
    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
    Salut
    Citation Envoyé par abir_rzg Voir le message
    Les erreurs affichiée lors de la compilation, c'est en rapport avec le QLineEdit et le QBoxLayout.
    Peut tu montrer quel sont ces erreurs?


    Il existe cette fonction qui permet de connaitre la position de la souris à tout instant
    http://qt.developpez.com/doc/4.5/qcursor/#pos

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Par défaut
    Voici ce que j'ai eu en résultat de la compilation:

    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
     
    mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `C:/d/dev/test/webkitapp'
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
    DQT_DLL -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEED
    S_QMAIN -I"..\..\qt\qt\include\QtCore" -I"..\..\qt\qt\include\QtGui" -I"..\..\qt
    \qt\include\QtWebKit" -I"..\..\qt\qt\include" -I"." -I"." -I"..\..\qt\qt\include
    \ActiveQt" -I"debug" -I"." -I"..\..\qt\qt\mkspecs\win32-g++" -o debug\main.o mai
    n.cpp
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
    DQT_DLL -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEED
    S_QMAIN -I"..\..\qt\qt\include\QtCore" -I"..\..\qt\qt\include\QtGui" -I"..\..\qt
    \qt\include\QtWebKit" -I"..\..\qt\qt\include" -I"." -I"." -I"..\..\qt\qt\include
    \ActiveQt" -I"debug" -I"." -I"..\..\qt\qt\mkspecs\win32-g++" -o debug\Window.o W
    indow.cpp
    Window.cpp: In constructor `FenPrincipale::FenPrincipale()':
    Window.cpp:16: error: no match for 'operator=' in '((FenPrincipale*)this)->FenPr
    incipale::editPosX = (((QLineEdit*)operator new(20u)), (<anonymous>->QLineEdit::
    QLineEdit(0u), <anonymous>))'
    ../../qt/qt/include/QtGui/../../src/gui/widgets/qlineedit.h:267: note: candidate
    s are: QLineEdit& QLineEdit::operator=(const QLineEdit&)
    Window.cpp:17: error: no match for 'operator=' in '((FenPrincipale*)this)->FenPr
    incipale::editPosY = (((QLineEdit*)operator new(20u)), (<anonymous>->QLineEdit::
    QLineEdit(0u), <anonymous>))'
    ../../qt/qt/include/QtGui/../../src/gui/widgets/qlineedit.h:267: note: candidate
    s are: QLineEdit& QLineEdit::operator=(const QLineEdit&)
    Window.cpp:18: error: no matching function for call to `QBoxLayout::QBoxLayout()
    '
    ../../qt/qt/include/QtGui/../../src/gui/kernel/qboxlayout.h:126: note: candidate
    s are: QBoxLayout::QBoxLayout(const QBoxLayout&)
    ../../qt/qt/include/QtGui/../../src/gui/kernel/qboxlayout.h:68: note:
          QBoxLayout::QBoxLayout(QBoxLayout::Direction, QWidget*)
    Window.cpp:19: error: no matching function for call to `QBoxLayout::addWidget(QL
    ineEdit&)'
    ../../qt/qt/include/QtGui/../../src/gui/kernel/qboxlayout.h:85: note: candidates
     are: void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)
    Window.cpp:20: error: no matching function for call to `QBoxLayout::addWidget(QL
    ineEdit&)'
    ../../qt/qt/include/QtGui/../../src/gui/kernel/qboxlayout.h:85: note: candidates
     are: void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)
    Window.cpp: In member function `void FenPrincipale::displayPosition()':
    Window.cpp:34: error: base operand of `->' has non-pointer type `QLineEdit'
    Window.cpp:35: error: base operand of `->' has non-pointer type `QLineEdit'
    mingw32-make[1]: *** [debug/Window.o] Error 1
    mingw32-make[1]: Leaving directory `C:/d/dev/test/webkitapp'
    mingw32-make: *** [debug] Error 2

  4. #4
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Il y a pas mal d'erreur dans ton code je pense:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QWebView *view = new QWebView();
    QWidget *DisplayPos= new QWidget(this);
    Tu ne pourra jamais récupérer le pointeur sur tes différents objets... Penser aux variables membres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     QObject::connect(view, SIGNAL(mouseMoveEvent(event)), this, SLOT(displayPosition()));
    mouseMoveEvent(event) n'est pas un signal de QWebView, non ?

    Je pense que tu devrait regarder le lien de Yan et voir si cela peu correspondre a tes besoins. Après regarde comment on utilise les differents event avec Qt.

    EDIT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      while(true)
           {
                editPosX->setText(QString::number(posX));
                editPosY->setText(QString::number(posY));
           }
    Je ne sais pas vraiment ce que tu veux faire mais la boucle infini je ne pense pas que cela soit un très bonne idée...
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Par défaut
    Citation Envoyé par superjaja Voir le message
    Il y a pas mal d'erreur dans ton code je pense:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QWebView *view = new QWebView();
    QWidget *DisplayPos= new QWidget(this);
    Tu ne pourra jamais récupérer le pointeur sur tes différents objets... Penser aux variables membres.
    J'ai aucune idée de ce dont tu parle ici. Peut-tu m'expliquer STP?
    Citation Envoyé par superjaja Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     QObject::connect(view, SIGNAL(mouseMoveEvent(event)), this, SLOT(displayPosition()));
    mouseMoveEvent(event) n'est pas un signal de QWebView, non ?
    Alors comment faire pour pister la position de la souris dans un QWebView?
    Citation Envoyé par superjaja Voir le message
    Je pense que tu devrait regarder le lien de Yan et voir si cela peu correspondre a tes besoins. Après regarde comment on utilise les differents event avec Qt.
    J'ai essayé avec la methode de Yan mais j'ai les mêmes erreurs.

  6. #6
    Membre expérimenté
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Par défaut
    Tu as supprimé (ou mis en commentaire) les parties de ton code devenues obsolètes?

    On peut avoir une copie du code après modif?

    Quelles sont les nouvelles erreurs?

    Utiliser les données membres ça signifie créer des attributs de ta classe qui ont pour rôle de stocker une copie du pointeur vers tes objets. De cette façon, tu peux y avoir accès n'importe où dans ta classe, à partir de cet attribut.

Discussions similaires

  1. [IB6][BCB5]Manipulation des dates.
    Par Sitting Bull dans le forum SQL
    Réponses: 4
    Dernier message: 09/04/2004, 15h33
  2. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40
  3. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  4. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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