#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
, Проблема в том, что он не распознает некоторые специальные символы, которые можно ввести в его записи «Имя файла»:
1) Для """
кнопка «Сохранить» отключена, поэтому я не могу сохранить файл с именем """
2) Для "aaa
это печатает aaa
3) Для \"aaa
это снова печатает aaa
4) Для aaaa"eee
это печатает eee
5) Для \"
Кнопка сохранения включена, но она ничего не делает при нажатии.
Я использую Linux. Кто-нибудь знает решение этой проблемы?
Причиной такого поведения может быть то, что "
символ, используемый в качестве разделителя имен файлов при редактировании строки QFileDialog. То есть Вы можете написать что-то вроде "file1" "file2"
открыть несколько файлов. Для лучшего понимания того, что происходит в этом диалоге, вы можете взглянуть на источники Qt, особенно в QFileDialogPrivate::typedFiles()
функция (qfiledialog.cpp), где ваш вход делится на "
:
QStringList tokens = editText.split(QLatin1Char('\"'));
Других решений пока нет …