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 :

Drag and drop pour plusieurs types de fichiers


Sujet :

Qt

  1. #1
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut Drag and drop pour plusieurs types de fichiers
    Désolé si un topic sur le sujet a déjà été créé,
    je voudrais gérer le drag & drop sur une appli, pour des fichiers de différents types (.mov, .aiff, .txt),
    est il possible d'encapsuler un switch(fileType) dans une méthode de dragEvent ?
    Une telle méthode existe-t-elle ?


    >>IrmatDen: j'ai vu que tu as répondu à un topic sur le sujet, mais il est en archive et ne parle que de la gestion des espaces avec %20

  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,

    Oui c'est possible; je suppose que la question derrière est plutôt "comment?"
    Un QDropEvent (classe mère de tout les QDrag*Event) te permet de récupèrer le mime data associé. Dans ce mime data, tu vérifies premièrement si tu as bien des urls et pas autre chose. Si c'est le cas, tu les récupères par url. Ensuite, pour chacune d'entre elle, tu peux vérifier l'extension en utilisant QFileInfo::completeSuffix sur un QFileInfo construit à partir de QUrl::toLocalFile().

  3. #3
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Merci, je récupère des Urls, mais je doit checker si le fichier est un .wav par exemple,
    hors dans les MIME DATA je ne trouve rien, j'ai testé un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(...hasFormat("audio/wav"))
    sans succés

  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
    Ca, c'est ce que tu reçois si tu drop un fichier wav ouvert. J'ai parlé d'url...

  5. #5
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    okay, donc tant que je drop une icone de fichier, il s'agit d'une url ?

    Y a t il une fonction très simple pour checker l'extension,

    ou doit on passer par un test sur la chaine de caracteres de l'Url ?

  6. #6
    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 ttone Voir le message
    okay, donc tant que je drop une icone de fichier, il s'agit d'une url ?

    Y a t il une fonction très simple pour checker l'extension,

    ou doit on passer par un test sur la chaine de caracteres de l'Url ?
    Tu dois checker l'extension de l'url. Passer par QFileInfo est une façon sûre de le faire, c'est pour cette raison que je t'indique ça. Sinon, tester la fin d'une url est risquée:
    http://unserveur/path/to/file.wav
    sera accepté si tu regardes la fin de la chaîne. Alors que ce qui t'intéresse est fort probablement les fichiers accessible... non ?

  7. #7
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    exactly, QFileInfo sera surement plus sur,

    petite question sur les "acceptedProposition", etc... quel est l'intérêt de ces méthodes ?
    Je pensais tout simplement appeler un méthode antérieure, d'ouverture par exemple.

  8. #8
    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
    La source peut demander un déplacement, une copie etc... (cf les actions possibles). tu peux ignorer certaines actions et en accepter d'autres, c'est à ça que ça sert.

    Si tu veux l'ouvrir, tu as juste à accepter l'événement (QEvent::accept) et enchaîner sur l'ouverture du fichier. Sinon, tu l'ignores. L'icône changera en fonction de l'acceptation ou de l'"ignorance"; l'utilisateur saura rapidement si oui ou non le drop est légal.

  9. #9
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Tu sais comment récupérer le l'url ?

    QMimeData à les méthode hasUrls() et setUrl() mais pas de get ?

    Je peux me servir de ca ?
    QList<QUrl> QMimeData::urls () const
    Returns a list of URLs contained within the MIME data object.
    et récupérer une seule url ?

    Puis faire un QFileInfo::suffix() pour vérifier que j'ai un .wav ?

  10. #10
    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
    Oui. Tu récupère la liste et tu prend le premier élément
    (N'oublie pas d'utiliser QUrl::toLocalFile)

  11. #11
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    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
    17
    18
    19
    20
    21
    22
    23
    24
    void GUI::dragEnterEvent(QDragEnterEvent *event)
     {
      if (event->mimeData()->hasUrls()){
    		QUrl path( event->mimeData()->urls().at(0) );
    		if(QFileInfo(path.toString()).suffix() == "wav")  {event->accept();}
    	}
    	else{
    		event->ignore();
    	}
     }
     
     void GUI::dragMoveEvent(QDragMoveEvent *event)
     {
       	//	event->ignore();
     
     
     }
     
    void GUI::dropEvent(QDropEvent *event)
     {
     
    		this->action();
     
    }

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

Discussions similaires

  1. drag and drop entre plusieurs reoderlist
    Par eman dans le forum ASP.NET Ajax
    Réponses: 0
    Dernier message: 04/04/2012, 19h56
  2. Réponses: 0
    Dernier message: 19/01/2011, 15h04
  3. drag and drop avec plusieurs éléments
    Par yohan0262 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/09/2008, 12h57
  4. Drag and drop pour control en VBA
    Par cbleas dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/03/2007, 10h30
  5. Drag and Drop vers plusieurs Edit
    Par greg778 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/05/2005, 08h50

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