2013-09-27 4 views
0
#include <QApplication> 
#include <QFileDialog> 
#include <QDebug> 

int main(int argc, char** argv){ 
    QApplication app(argc, argv); 

    QFileDialog dlg; 
    dlg.setAcceptMode(QFileDialog::AcceptSave); 
    if (dlg.exec()) { 
     qDebug() << dlg.selectedFiles(); 
    } 
    return app.exec(); 
} 

С помощью этого кода мы можем создать QFileDialog. Проблема заключается в том, что она не recoginize некоторых специальных символов, которые могут быть напечатаны в его записи «Имя файла»:Вопрос QFileDialog со специальным символом

1) Для """ сохранить кнопку отключаться, так что я не могу сохранить файл с именем """

2) Для "aaa печатает aaa

3) Для \"aaa снова печатает aaa

4) Для aaaa"eee печатает eee

5) Для кнопки \" кнопка сохранения включена, но при нажатии она ничего не делает.

Я использую Linux. Кто-нибудь может решить проблему?

+0

основной файловой системы не может разрешить эти символы –

+0

Я могу создавать файлы с именем '' 'используя' touch \ ''команду – Ashot

ответ

2

Причиной такого поведения может быть то, что символ " используется как разделитель имен файлов в редакции строки QFileDialog. То есть вы можете написать что-то вроде "file1" "file2", чтобы открыть несколько файлов. Для лучшего понимания о том, что происходит в этом диалоге, вы можете посмотреть в источниках Qt, особенно в QFileDialogPrivate::typedFiles() функции (qfiledialog.cpp), где ваш вклад расщепленного ":

QStringList tokens = editText.split(QLatin1Char('\"')); 
Смежные вопросы