如何使用Juce的FileFilter定义文件筛选规则?遇抽象类实例化报错
解决JUCE文件浏览器过滤音频文件的问题
你碰到的这个错误很典型——juce::FileFilter是一个抽象类,它包含未实现的纯虚函数,所以你不能直接实例化它,必须用它的子类来实现具体的过滤逻辑。
JUCE已经为我们准备了开箱即用的子类,最适合你需求的就是WildcardFileFilter,它可以通过文件扩展名的通配符来快速筛选文件。下面是正确的写法:
// 创建仅显示WAV文件的过滤器 auto audioFileFilter = std::make_unique<juce::WildcardFileFilter>( "*.wav", // 要匹配的文件扩展名通配符 "", // 可选:需要排除的文件模式(这里不需要就留空) "Audio Files (*.wav)" // 过滤器的显示名称,会在文件浏览器的筛选菜单里显示 ); // 将过滤器设置给文件选择器 fileChooser->setFileFilter(audioFileFilter.get());
如果需要支持多种音频格式(比如WAV、MP3、FLAC),只需要把通配符部分改成用分号分隔的格式:
"*.wav;*.mp3;*.flac"
要是你需要更复杂的过滤规则(比如不只是看扩展名,还要检查文件的实际音频格式),那你可以自己继承juce::FileFilter,实现它的两个纯虚函数:isFileSuitable和isDirectorySuitable。不过对于大多数普通的音频文件筛选场景,WildcardFileFilter完全够用了。
内容的提问来源于stack exchange,提问作者harry97uk
相关产品推荐
相关产品推荐

