7
votes

Spécifiez l'extension par défaut dans qfiledialog :: grevefilename

Y a-t-il un équivalent du membre LPSTRDEFext de OpenFileName Struct utilisée dans la fonction Win32 Grevefilename?

Description de MSDN:

lpctstr lpstrdefext

L'extension par défaut. GetopenfileName et grevefilename annonce ceci Extension du nom du fichier si l'utilisateur ne parvient pas à taper une extension. Cette chaîne peut être n'importe quelle longueur, mais seuls les trois premiers caractères sont annexé. La chaîne ne doit pas contenir de période (.). Si ce membre est null et l'utilisateur ne parvient pas à taper une extension, aucune extension n'est annexé.

Donc, si lpstrdefext est défini sur "txt" et les types d'utilisateurs "myfile" au lieu de "myfile.txt", la fonction renvoie toujours "myfile.txt".


0 commentaires

3 Réponses :


0
votes

Vous ne savez pas exactement ce que LPCTSTR Lpstrdefext tente de faire, mais la documentation QT donne l'exemple suivant

 QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                            "/home/jana/untitled.png",
                            tr("Images (*.png *.xpm *.jpg)"));


1 commentaires

Sous Windows, si vous obtenez une boîte de dialogue de fichier sauvegarde de, dites, le bloc-notes et vous tapez simplement 'A' au lieu de 'A.txt', le fichier créé ne serait pas "A". (c'est-à-dire sans extension), ce serait 'A.TXT'.



6
votes

edit : si cela ne fonctionne pas pour vous regarder La réponse ci-dessous par @ user52366

qt extraire l'extension par défaut du paramètre "sélectionné", si spécifié.

Voici un exemple: xxx

lorsque vous utilisez ce Code La méthode grevefilename () ajouta automatiquement l'extension de fichier ".abd" si l'utilisateur n'a pas spécifié l'un dans la boîte de dialogue. Vous pouvez voir la mise en œuvre de ceci dans le fichier qt_win_get_save_file_name () dans le fichier source qt qt "qfiledialog_win.cpp".

malheureusement cela ne fonctionne pas pour la méthode getopenfileName ().


1 commentaires

Cela ne fonctionne pas pour moi et je ne peux pas faire référence à une telle utilisation dans la documentation. Pourriez-vous m'envoyer un pointeur?



1
votes

Comme mentionné dans le commentaire ci-dessus, cela ne fonctionne pas, au moins pour moi.

À la fin, j'ai sauté la méthode statique et utilisé: P>

QFileDialog dialog(this, "Save someting", QString(),
                   "Comma-separated file (*.csv)");
dialog.setDefaultSuffix(".csv");
dialog.setAcceptMode(QFileDialog::AcceptSave);
if (dialog.exec()) {
    const auto fn = dialog.selectedFiles().front();
    // a QStringList is returned but it always contains a single file
    // do something using filename 'fn' ...
}


1 commentaires

Peut-être qu'ils ont changé dans des versions plus récentes