c++ - 具有特殊字符的 QFileDialog 问题

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

最佳答案

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

QStringList tokens = editText.split(QLatin1Char('\"'));

关于c++ - 具有特殊字符的 QFileDialog 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19052035/

相关文章:

c - 如何使用 C 在 QT 应用程序中获取处理器制造商 ID

QteSTLib:未执行 QNetworkRequest

php - 带有奇怪字符的完整 HTML

python - 在 Python 中从 Ascii 转换某些特殊字符时遇到问题

c++ - 更改 QLineEdit 占位符文本的颜色

c++ - 与同一个库链接两次是 g++ 的问题吗?

c++ - 如何从字符串中删除特定的子字符串?

c++ - boost中的数字范围迭代器?

c++ - 创建密码的 SHA-256 散列的 Botan 教程或示例

mysql - REPLACE 查询不会替换所有提到的字符