#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('\"'));
关于c++ - 具有特殊字符的 QFileDialog 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19052035/