gpt4 book ai didi

qt - 来自 mime-types 的 QFileDialog 过滤器

转载 作者:行者123 更新时间:2023-12-03 18:00:00 25 4
gpt4 key购买 nike

我希望 QFileDialog 中的过滤器匹配相关平台上 Phonon 支持的所有音频文件类型。

1 - 但是我无法在 Qt 中找到在过滤器中使用 mime 类型的方法。我怎样才能做到这一点?

2 - 或者如何手动找到 mimetypes 的相应文件扩展名?解决方案应该是基于 Qt 的,或者至少是跨平台的,并且在 Qt 的任何地方都得到支持。

选项一是我的首选解决方案,但是选项二也可以。

以下是描述我的问题的简短代码:

#include <QApplication>
#include <QFileDialog>
#include <QStringList>
#include <phonon/backendcapabilities.h>

QStringList mime_to_exts(QString mime)
{
// WHAT TO REALLY DO ??
// NEEDLESS TO SAY; THIS IS WRONG...
return QStringList(mime.split("/").back().split('-').back());
}

int main(int argc, char **argv)
{
QApplication app(argc, argv);
app.setApplicationName("phononext");

QStringList p_audio_exts;
QStringList p_mime_types = Phonon::BackendCapabilities::availableMimeTypes();
for(QStringList::iterator i = p_mime_types.begin(), ie = p_mime_types.end(); i != ie; i++)
{
if((*i).startsWith("audio"))
p_audio_exts << mime_to_exts(*i);
}

QString filter = QString("All Files(*)");
if(!p_audio_exts.isEmpty())
{
QString p_audio_filter = QString("Audio Files (*.%1)").arg(p_audio_exts.join(" *."));
filter = QString("%1;;%2").arg(p_audio_filter).arg(filter);
}

QFileDialog::getOpenFileName(NULL, "Open Audio File", QString(), filter);
}

最佳答案

调用 availableMimeTypes()在 Phonon 后端,然后遍历生成的 MIME 类型列表,并为每个列表枚举 QMimeType::extensions() 返回的扩展名.

关于qt - 来自 mime-types 的 QFileDialog 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2599852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com