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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    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 émérite

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    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.

  3. #3
    Inactif  


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

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    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 expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    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
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    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 : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    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
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    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 expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    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
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    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 expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    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
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    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 ?

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