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 :

Glisser-déposer


Sujet :

Qt

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Glisser-déposer
    Hello,

    Je suis débutant avec QT et je rencontre un petit soucis sur un de mes projet.

    En effet sur ma fenêtre principale, j'ai une scroll area avec plusieurs line edit dedans. chacun représente un chemin vers des dossier que l'utilisateur doit choisir. J'aimerai implémenté un glisser déposé pour faire en sorte que quand l'utilisateur fait glisser un dossier ou un fichier, le chemin vers le dossier soit renseigné dans le line edit sous le curseur de ça souris.

    pour ce faire j'ai implémenté les méthode dragEnterEvent et dropEvent. Cependant, je rencontre un soucis:

    quand ma sourie passe sur un des line edit et que je lâche le fichier tout ce passe bien. cependant si ma souris passe ,par exemple, au dessus du line edit 1, 2 et 3 avant d'arriver au 4 et que je lâche le fichier au-dessus du 4 alors le 1,2,3 et 4 vont remplir leurs champ.

    C'est un comportement que je ne comprends pas très bien étant donné quand j'ai fais en sorte de dropper seulement dans le line edit qui ce trouve sous ma sourie.

    voici le 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
    void MainWindow::dragEnterEvent(QDragEnterEvent *e)
    {
        e->accept()
    }
     
    void MainWindow::dropEvent(QDropEvent *e)
    {
        foreach (const QUrl &url, e->mimeData()->urls()) {
            QString fileName = StringManagement::getDir(url.toLocalFile());
     
            if(ui->lineEdit->underMouse())
                ui->lineEdit->setText(fileName);
            if(ui->lineEdit_2->underMouse())
                ui->lineEdit_2->setText(fileName);
            if(ui->lineEdit_5->underMouse())
                ui->lineEdit_5->setText(fileName);
            if(ui->lineEdit_9->underMouse())
                ui->lineEdit_9->setText(fileName);
            if(ui->lineEdit_10->underMouse())
                ui->lineEdit_10->setText(fileName);
            if(ui->lineEdit_11->underMouse())
                ui->lineEdit_11->setText(fileName);
        }
    }
    je pense que je ne comprend pas très bien le principe d'event. d'auttent plus que quand je rajoute un dragLeavEnvent avec un print console comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void MainWindow::dragEnterEvent(QDragEnterEvent *e)
    {
        qInfo() << "ici";
        e->accept();
    }
     
     
    void MainWindow::dragLeaveEvent(QDragLeaveEvent *e){
        qInfo() << "la";
        e->accept();
    }
    si je place ma souris au dessus d'un line edit et que j'y reste, je reçois les deux messages.

    je vous remercie par avance pour vôtres aide.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Pour ce que vous voulez faire, je pense qu'il est nécessaire que de gérer le drop. Le drag, c'est lorsque vous voulez prendre un élément pour le déposer (drop) autre part.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour merci de votre réponse.

    J'ai quand même besoin du drag sinon je ne suis pas autorisé a drop. je sais pas trop comment gérer le drop. Je comprends pas très bien comment ça marche. si je mets des if, tous les champs ou passe ma sourie sont remplis, si je mets des else if alors c'est juste le premier champ ou passe ma sourie... je comprends pas vraiment pourquoi.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Donc les tests (if) ne donnent pas le résultat voulu.
    Vous devriez plutôt passer par un QSignalMapper (ou une surcharge du QLineEdit) et cabler le drag&drop pour chaque élément graphique et non pour le parent global.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/02/2006, 14h33
  2. Listes Simples et propriétés / Glisser déposer
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 03/12/2005, 23h14
  3. Paramétrage du glisser-déposer selon l'application cible
    Par annedeblois dans le forum Windows
    Réponses: 3
    Dernier message: 17/10/2005, 21h57
  4. Glisser déposer sur formulaire
    Par norvel dans le forum Access
    Réponses: 5
    Dernier message: 03/10/2005, 11h20
  5. [MFC] Glisser/Déposer dans une CView
    Par octopus984 dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2005, 10h15

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