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 :

QFileDialog et filterSelected avec Linux


Sujet :

Qt

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut QFileDialog et filterSelected avec Linux
    Bonjour à tous,

    Je vous communique un petit problème auquel je fais face en Qt 4.5.3 sous Linux, j'aimerais savoir si c'est moi qui ait rien compris ou si effectivement il y a un bug de Qt.

    Je veux utiliser la fonction statique de QFileDialog en connaissant le filtre qui a été utilisé pour ouvrir le fichier, exemple tout bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QString filter=QString("Text file (*.txt)");
    QString filterSelected;
    QString fileName = QFileDialog::getOpenFileName(this, tr("open"), QString("/home"), filter, &filterSelected);
    qDebug() << filterSelected;
    Et là j'ai jamais rien dans filterSelected. En relisant la doc sur le site de Qt pourtant, ça dit bien que la chaîne devrait contenir le filtre sélectionné ("The filter selected is set to selectedFilter"), d'où mon interrogation.

    Donc voilà, si ça dit quelque chose à quelqu'un... Merci !

  2. #2
    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
    Euh, en fait, si j'ai bien compris la doc, le selectedFilter est le filtre qui sera sélectionné lors de l'apparition du dialog. En gros si tu as *.txt, *.png, et *.jpg comme filter, tu peux choisir lequel sera mis au lancement du dialog.

    Ce champ n'est pas fait pour récupérer le choix de l'utilisateur. Enfin, c'est ce que j'ai compris.

    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/

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour

    The filter selected is set to selectedFilter.
    (http://qt.developpez.com/4.6/qfiledi...etopenfilename)

    Donc cela est bien censé retourner le filtre sélectionné... et c'est bien ce que fait cette fonction chez moi (ubuntu 10.4 64b, Qt 4.7)

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    The filter selected is set to selectedFilter.
    Heu pour moi sa signifie que le filtre sera mis sur selectedFilter et pas l'inverse.

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ok merci pour la rapidité de vos réponses.

    gbdivers d'après ce que tu dis, je devrais bien avoir quelque chose dans selectedFilter si l'utilisateur utilise la boîte de dialogue de la façon attendue, donc ça vient peut-être de ma version de Qt. Ce qui est étrange c'est que j'ai regardé dans le bug tracker de Qt et j'ai rien vu à ce sujet.

    Mais ils ont dû corriger ça à un moment ou à un autre.
    Je vais donc réfléchir à un workaround.

    Merci encore !

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    The filter selected is set to selectedFilter.
    Le filtre sélectionné est affecté à selectedFilter.
    Le filtre sélectionné faisant référence au choix du filtre dans la boite de dialogue parmi la liste des filtres proposés.

    Le process est donc : on fournit une liste de filtre dans la variable filter -> l'utilisateur sélectionne un des filtres -> le filtre sélectionné est affecté à selectedFilter -> on peut récupérer dans le programme le filtre sélectionné

    Et je te confirme que c'est bien le résultat que j'obtiens (j'ai ajouter plusieurs filtres pour tester qu'il me revoie par uniquement la variable filtre mais bien uniquement le filtre sélectionné)

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Le process est donc : on fournit une liste de filtre dans la variable filter -> l'utilisateur sélectionne un des filtres -> le filtre sélectionné est affecté à selectedFilter -> on peut récupérer dans le programme le filtre sélectionné
    Oui oui je comprends sauf que sous Ubuntu 10.04, avec Qt 4.5.3, ça ne marche pas, selectedFilter ne se met pas à jour.

    D'ailleurs je viens de tester mon programme sous Windows avec Qt 4.5.3 et là ça fonctionne bien. Du coup j'ai une nouvelle question, toujours sur le même sujet, est-ce que la boîte QFileDialog est censée afficher les extensions dans le choix des filtres ?
    Concrêtement, la ligne dans la boîte de choix de filtres dans Windows est :
    "Text file (*.txt)"
    et dans Ubuntu
    "Text file"

    Est-ce normal ?

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    J'ai fais quelque test, et il se trouve... qu'on avais tout les deux raison

    En fait le filtre sera mis sur selectedFilter et si on modifie se filtre, selectedFilter sera modifier en fonction.

    pour l'affichage des extension il semble qu'il y avait moyen de le gerer mais la constante semble sans effet depuis Qt 4.5 :
    QFileDialog::HideNameFilterDetails | 0x00000040 |Indicates if the is hidden or not. This value is obsolete and does nothing since Qt 4.5:
    EDIT:
    Je viens de tester apparemment la constante QFileDialog::HideNameFilterDetails cache bien les extensions sous Windows.

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    EDIT:
    Je viens de tester apparemment la constante QFileDialog::HideNameFilterDetails cache bien les extensions sous Windows.
    C'est bizarre sous 4.5.3, dans la QComboBox nommée "Fichiers de type" par défaut sous Windows XP en français, moi j'ai bien "Text file (*.txt)". C'est-à-dire la QString filter au complet.

    I'm lost

    EDIT:
    Ha pardon je suis stupide, c'est juste que HideNameFilterDetails doit-être à faux par défaut dans QFileDialog. Sous Windows en tous cas.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    Citation Envoyé par RedWark Voir le message
    Ha pardon je suis stupide, c'est juste que HideNameFilterDetails doit-être à faux par défaut dans QFileDialog. Sous Windows en tous cas.
    C'est juste une option que tu passes en paramètre en fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QFileDialog::getOpenFileName(NULL, "open", QString("/home"), filter, &filterSelected,QFileDialog::HideNameFilterDetails);

  11. #11
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par atttchoum Voir le message
    C'est juste une option que tu passes en paramètre en fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QFileDialog::getOpenFileName(NULL, "open", QString("/home"), filter, &filterSelected,QFileDialog::HideNameFilterDetails);
    Ok merci... Je suis pas encore à l'aise avec les options.

    Et si je veux forcer les extensions à se montrer, comment devrais-je faire ?

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    A vrai dire je me pose la même question

  13. #13
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bon il apparaît que l'histoire de l'extension est normale :
    -Sur Windows, les extensions sont affichées par défaut
    -Sur Linux, elles ne le sont pas
    Quelques questions subsistent (comment forcer l'affichage des extensions sous Linux ?), mais bon...

    Par contre je maintiens qu'il doit y avoir un bug au niveau de la mise à jour de la chaîne sensée contenir le filtre sélectionné sous Linux avec Qt 4.5.3.

Discussions similaires

  1. Installation d'une freebox avec Linux
    Par Herve_G dans le forum Réseau
    Réponses: 14
    Dernier message: 11/12/2005, 22h51
  2. Installation Windows 2000 sur pc avec linux.
    Par User dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 13/11/2005, 18h59
  3. [PCM et MBR] Cohabitation avec linux
    Par Alec dans le forum Windows XP
    Réponses: 1
    Dernier message: 26/10/2005, 09h34
  4. Réponses: 4
    Dernier message: 07/02/2005, 21h22
  5. Gérer ce qui se lance avec linux
    Par Harry dans le forum Mandriva / Mageia
    Réponses: 7
    Dernier message: 26/07/2004, 16h05

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