3

我正在编写一个应用程序,它要求我使用另一个文件系统和文件引擎处理程序,而不是 qt 的默认处理程序。基本上我想要做的是使用 qt 的文件对话框,但有一个我的底层文件系统处理程序(例如使用 boost 文件系统库构建)来处理与该对话框中的文件和目录操作有关的所有操作。我已经编写了一个自定义文件引擎来处理一些操作,但我现在坚持使用 Qt 的文件系统模型和文件系统观察程序引擎,因为我需要为这个自定义文件引擎传输信号。看来我前面有一项艰巨的任务。我是否朝着正确的方向前进?

还有其他更简单的方法可以实现吗?谁能给我有关如何进行的任何想法。我正在考虑研究代理模型,但不确定这是否可行。

提前感谢您的帮助。

4

2 回答 2

1

代理模型使用底层模型包含的数据进行操作,因此您不能使用它来获取全新的模型内容。

执行此类任务的明显方法是调查 QFileDialog 具有什么样的模型,然后替换模型。

当然,您可能可以从 QFileDialog 复制模型,相对于您的新文件引擎,然后以一种有点奇怪的方式使用 propxy 模型:设置它(它将连接到 QFileDialog 的底层模型,您无法访问另一种方式),然后使用您的代理的 setSourceModel() 来设置您的模型。

或者您可以简单地获取 QFileDialog 的代码并用您的替换文件系统感知的代码。但我认为它闻起来很糟糕,而且我不知道它是否合法,以及由于许可证等原因你会面临什么问题。

于 2010-04-12T20:58:02.933 回答
0

过去可以使用 QAbstractFileEngine 等来执行此操作,但 Qt 4.6 中对 QDir 的更改在某种程度上破坏了它 - 请参阅Qt bug 10333了解我的经验。

于 2010-05-16T07:06:57.180 回答