QFileDialog: - 根据用户选择将扩展名设置为已保存的文件

时间:2016-07-17 18:49:50

标签: qt save qfiledialog

我有以下代码(使用QT 4.8编写的富文本编辑器),我正在处理:

bool TextEdit::fileSaveAs()
{
    QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."),
                                              QString(), tr("ODT document (*.odt);;HTML-Files (*.htm *.html)"), 0, QFileDialog::DontUseNativeDialog );

    if (fn.isEmpty())
        return false;
    if (! fn.endsWith(".txt", Qt::CaseInsensitive) || (fn.endsWith(".odt", Qt::CaseInsensitive) || fn.endsWith(".htm", Qt::CaseInsensitive) || fn.endsWith(".html", Qt::CaseInsensitive)) )
        fn += ".odt"; // default
    setCurrentFileName(fn);
    return fileSave();
}

保存对话框窗口允许在* .odt和* .html扩展名之间进行选择;但是,默认情况下,始终设置* .odt扩展名(请参阅fn + =" .odt")。 我知道我可以将此更改为html,但我的目标是摆脱代码中的强制扩展集,并使用在保存对话框窗口中选择的扩展名保存文档:

http://funkyimg.com/i/2efhs.png

我怎样才能做到这一点?有人可以建议我一些实际的例子,考虑到我是一个关于编码的新手吗?

1 个答案:

答案 0 :(得分:1)

使用另一个带有selectedfilter参数的构造函数,结果将是

QString selectedFilter;
QString fn = QFileDialog::getSaveFileName 
    (this,
    tr("Save as..."),
    QString(),
    tr("ODT document (*.odt);;HTML-Files (*.htm *.html)"),
    0,
    QFileDialog::DontUseNativeDialog,
    &selectedFilter);