用户通过 QFileDialog 在我们的应用程序中打开文件。文件名的顺序很奇怪。什么决定了排序顺序,我们如何让它按文件名排序,或者以其他方式强加我们自己的排序,也许给它一个指向我们自己的比较函数的指针?
文档和在线论坛没有帮助。除非它隐藏得很好,否则似乎没有任何排序方法,属性等。
这是一个主要的 Linux 应用程序,但也可以在 Mac 上运行。(我对 Mac 一无所知。)
以下是源代码的精彩部分:
QtFileDialog chooser(parent, caption, directory, filter);
/// QtFileDialog is our class derived from QFileDialog
chooser.setModal(true);
chooser.setAcceptMode(acceptMode);
chooser.setFileMode(fileMode);
QStringList hist = chooser.history();
chooser.setHistory(hist);
/* point "x" */
if(chooser.exec()) {
QStringList files = chooser.selectedFiles();
...blah blah blah...
从一个答案中,我尝试了一个邪恶的实验,在“点 x”处添加了这个不明智的猜测代码:
QSortFilterProxyModel *sorter = new QSortFilterProxyModel();
sorter->sort(1); // ???
chooser.setProxyModel(sorter);
但是在这个级别的代码深处大约有 33 个子例程调用时,这发生了惊人的崩溃。我承认,即使在阅读了 Qt4 文档和示例代码之后,我也不知道 QSortFilterProxyModel 的正确用法。