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 :

Récupérer un chemin dans un QDirModel


Sujet :

Qt

  1. #1
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut Récupérer un chemin dans un QDirModel
    Bonjour a tous !

    Voila mon probleme...
    J'ai un QTreeView avec un QDirModel, et un QLineEdit. J'ai implementé le grag'n'drop pour pouvoir glisser un dossier de l'arbre dans le QLineEdit.

    Je fais donc appel a la fonction filePath( const QModelIndex& ) du QDirModel pour recuperer le chemin du fichier, mais impossible de recupérer une chaine valide.

    J'ai de deux manieres de récupérer l'index par la vue : par la fonction indexAt( ) et currentIndex( ). A chaque fois l'index est valide mais la fonction filePath( ) de marche toujours pas.

    En espérant que vous pourrez m'aider,
    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    peut-on voir ton code d'implémentation du drag and drop ?

  3. #3
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    C'est plus ou moins le code de la doc...

    Voila pour le QTreeView :

    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
     
    DirView::DirView( QWidget* parent ) :
    	QTreeView( parent ),
    	__model( new QDirModel( ))
    {
    	setModel( __model );
    }
     
    ////////////////////////////////////////
     
    void DirView::mouseMoveEvent( QMouseEvent* event )
    {
    	if ( event->buttons( ) & Qt::LeftButton ) {
    		int distance = ( event->pos( ) - __dragStartPosition ).manhattanLength( );
    		if ( distance < QApplication::startDragDistance( )) {
    			startDrag( );
    		}
    	}
    	QTreeView::mouseMoveEvent( event );
    }
     
    ////////////////////////////////////////
     
    void DirView::startDrag( )
    {
    	QModelIndex index = currentIndex( );
    	if ( !index.isValid( )) {
    		return;
    	}
     
    	// ici ca passe
     
    	// on renseigne le drag
    	QMimeData* mimeData = new QMimeData( );
    	mimeData->setText( __model->filePath( index ));	// et là, chaine vide !!
     
    	QDrag* drag = new QDrag( this );
    	drag->setMimeData( mimeData );
     
    	// on lance le drag
    	drag->exec( Qt::CopyAction );
    }
    Et pour le QLineEdit:

    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
     
    DirEdit::DirEdit( QWidget* parent ) :
    	QLineEdit( parent )
    {
    	setAcceptDrops( true );
    }
     
    ////////////////////////////////////////
     
    void DirEdit::dragEnterEvent( QDragEnterEvent* event )
    {
    	if ( event->mimeData( )->hasFormat( "text/plain" )) {
    		event->acceptProposedAction( );
    	}
    }
     
    ////////////////////////////////////////
     
    void DirEdit::dropEvent( QDropEvent* event )
    {
    	setText( event->mimeData( )->text( ));
    	event->acceptProposedAction( );
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    je n'ai jamais eu à implémenter un drag and drop donc j'ai peu d'expérience à ce propos mais ton code semble correct

    peut être que le problème se situe plus en amont, es-tu sûr que ton QDirModel/QTreeView est correctement créé ?

  5. #5
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    C'est bien ce que je pense... J'ai testé de drag avec "toto" et il arrive bien dans ma lineEdit.

    Mon model est bien créé tout s'affiche parfaitement
    J'ai aussi essayé avec QFileSystemModel et c'est pareil...

  6. #6
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    Bon finalement j'ai réussi...

    Je reconstruit le chemin grace a l'index et a ses parents. Je n'ai toujours pas compris pourquoi l'api bug, mais maintenant j'y touche plus

Discussions similaires

  1. Récupérer le chemin du fichier dans un input file
    Par michel81 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/12/2008, 12h29
  2. récupérer le chemin de l'mage dans le formulaire modifier
    Par majda_afkir dans le forum ASP.NET
    Réponses: 1
    Dernier message: 01/09/2008, 15h20
  3. Récupérer le chemin contenu dans une cellule
    Par Geprocor dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/06/2008, 16h32
  4. [D5] Récupérer le chemin de la base déclarée dans ODBC
    Par Oluha dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/11/2007, 15h35
  5. [VB6] Récupérer chemin dans server FTP et naviguer
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 26/07/2006, 00h03

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