具有特殊字符的QFileDialog问题

时间:2013-09-27 13:29:01

标签: c++ qt special-characters qfiledialog

#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。有没有人知道这个问题的解决方案?

1 个答案:

答案 0 :(得分:2)

这种行为的原因可能是"字符在QFileDialog的行编辑中用作文件名分隔符。即您可以编写类似"file1" "file2"的内容来打开多个文件。为了更好地理解此对话框中发生的事情,您可以查看Qt源代码,尤其是QFileDialogPrivate::typedFiles()函数(qfiledialog.cpp),其中您的输入被"拆分:

QStringList tokens = editText.split(QLatin1Char('\"'));
相关问题