QFileDialog의 필터를 해당 플랫폼의 Phonon에서 지원하는 모든 오디오 파일 유형과 일치 시키길 원합니다.mime-types의 QFileDialog 필터
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);
}
니스, 좋은 해결책입니다. 그러나 내가 볼 수있는 한 두 가지 단점이 있습니다. 대화 상자의 필터 드롭 다운 상자가 허용 된 파일 유형으로 채워지지 않는 것이 사소한 것입니다. 그러나 당신은 아마 거기에 몇 가지 설명 텍스트를 넣을 수 있습니다. 내 경우처럼 "오디오 파일". 더 심각한 단점은 더 이상 기본 파일 대화 상자를 사용할 수 없다는 것입니다. 이것은 저를위한 쇼 스토퍼이며 내 마지막 (?) 해결책은 mime.types 파일을 내 응용 프로그램과 함께 제공하는 것입니다. 그러나 나는 그것을 싫어합니다! 네이티브 대화에 대해 신경 쓰지 않는다면 제 의견에는 더 좋은 해결책입니다. 그러므로 나는 그것을 정답으로 표시한다. – Mathias
네, 네이티브 파일 대화 상자는 장점과 문제점을 가지고 있습니다. Qt 대화 상자 (특히 네트워크 공유 및 즐겨 찾기)보다 더 안정적이지만 Qt 대화 상자에서 할 수있는 것처럼 단추 텍스트와 다른 것들을 사용자 정의 할 수는 없습니다. WRT 드롭 다운 필터, 맞습니다. 프록시 모델을 설치 한 후 확장명을 기준으로 파일을 필터링하는 것이 궁금합니다. 그러나 확실히 알고 테스트하지는 않았습니다. –