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 :

Comment créer un TreeView façon explorateur Windows


Sujet :

Qt

  1. #1
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut Comment créer un TreeView façon explorateur Windows
    Salut,
    J'ai essayer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        m_pDirModel = new QFileSystemModel();
        m_pDirModel->setRootPath(QDir::rootPath());
        ui->treeView->setModel(m_pDirModel);
        ui->treeView->setRootIndex(m_pDirModel->index(QDir::rootPath()));
    ...ça marche mais j'ai besoin de faire mieux : afficher les disques locaux, réseaux, les clés usb, etc... bref, comme l'explorateur Windows.
    Avec le code ci-dessus, ne s'affichent que les répertoires sous C:

    Quelqu'un a une idée ?

  2. #2
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Quel est le but de ton explorateur ? Pour des choses simples comme sélectionner un fichier ou un répertoire, Qt propose des boîtes de dialogue standard (et qui autant que possible s'adaptent à l'OS et ses conventions) : http://qt.developpez.com/doc/latest/qfiledialog.html

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    La doc :

    QString QDir::rootPath () [static]

    Returns the absolute path of the root directory.

    For Unix operating systems this returns "/". For Windows file systems this normally returns "c:/".

    See also root(), drives(), currentPath(), homePath(), and tempPath().
    Toujours la doc :

    QFileInfoList QDir::drives () [static]

    Returns a list of the root directories on this system.

    On Windows this returns a list of QFileInfo objects containing "C:/", "D:/", etc. On other operating systems, it returns a list containing just one root directory (i.e. "/").

    See also root() and rootPath().
    Ca te demandera un peu plus de traitement pour parcourir la liste des emplacements, mais ça ne devrait pas être très compliqué.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    pour utiliser l'ensemble des disques dans un QFileSystemModel sous windows,
    tu peux procéder comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    m_pDirModel = new QFileSystemModel();
    m_pDirModel->setRootPath("");
     
    ui->treeView->sortByColumn(1);
    ui->treeView->setModel(m_pDirModel);
    Le rootPath vient de l'exemple qt "dirview".

    Je ne sais pourquoi la fonction QDir::rootPath () renvoie "/" sous linux et "c:/" sous win.
    J'imagine qu'il doit y avoir une bonne raison ...

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Je sais bien qu'il y a de la neige, mais faut ranger la pelle lvlike (tu déterres un post qui date de Mars).

    Je ne sais pourquoi la fonction QDir::rootPath () renvoie "/" sous linux et "c:/" sous win.
    Cela n' a rien d'étonnant, la racine ( " le début de ton disque dur ") est nommée "/" dans les systèmes Unix.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    lol, Gulish, oui en effet, la réponse est quelque peu tardive.

    Cela n' a rien d'étonnant, la racine ( " le début de ton disque dur ") est nommée "/" dans les systèmes Unix.
    Pour le rootPath, je me suis mal exprimé :
    ce que je voulais dire, c'est que renvoyer comme rootPath la racine d'un disque logique sous windows
    n'est pas très cohérent par rapport à l'implémentation linux qui renvoie bien la racine du système.

    Je pense que c'est dû au fait que le système Windows n'intègre pas directement cette notion de racine
    et que le contenu de "My computer" n'a pas d'équivalent en ligne de commande. (?)

    Autrement dit la commande "cd /" sous linux n'aurait pas d'équivalent Windows.
    D'ailleurs la commande "cd \" sous windows ramène à la racine du disque logique courant.

Discussions similaires

  1. Comment créer les disque de restauration Windows Vista
    Par jo.comeau dans le forum Windows Vista
    Réponses: 4
    Dernier message: 29/12/2011, 22h32
  2. comment créer un fichier exécutable sur windows ce .NET
    Par Fadwa_Ing dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 29/06/2009, 09h28
  3. Comment créer un hint façon Richedit
    Par BuzzLeclaire dans le forum Débuter
    Réponses: 7
    Dernier message: 11/06/2009, 22h04
  4. [WPF] Comment faire une fenetre type explorateur windows (coté listbox)
    Par Zucher dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 28/01/2008, 16h16
  5. comment créer un serveur proxy sur windows 2000 server?
    Par dj_techno dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 25/01/2008, 14h55

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