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. 问题是它无法识别一些可以在“文件名”条目中输入的特殊字符:

1)对于"""保存按钮被禁用,所以我不能用名称保存文件"""

2)因为"aaa它打印aaa

3)\"aaa再次打印aaa

4)因为aaaa"eee它打印eee

5)\"保存按钮已启用,但单击时它什么也不做。

我正在使用 Linux。有谁知道这个问题的解决方案?

4

1 回答 1

2

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

QStringList tokens = editText.split(QLatin1Char('\"'));
于 2013-09-27T13:57:53.880 回答