我在TreeView中使用自定义的子类QFileSystemModel,以允许用户使用复选框选择文件夹。我的问题是,映射的网络驱动器被列为硬盘驱动器,但我无法在它们上操作,因此我只想显示本地驱动器。我如何强制Qfilesystemmodel仅显示本地驱动器?

有帮助吗?

解决方案

从我能够从来源和文档中弄清楚的东西,不可能直接使用qfilesystemmodel进行。

我能想到的唯一可能的解决方法是使用重新定义的filterAcceptsrow()或filterAcceptscolumn()或两者兼而有之,我不确定哪个是我不使用qfilesystemmodel,并且不知道是什么,并且不知道是什么,又不知道是什么,我不确定是什么,我不确定是什么,并且不知道它认为是什么,我不确定是什么,什么行。然后,重新定义的方法将通过使用qfilesystemmodel :: filepathrole或使用qobject_cast <>并调用qfilesystemmodel :: filepath()来弄清文件的路径。然后,它将以某种方式找出驱动器的根路径并调用getDriveType()Winapi函数,因为QT显然无法确定驱动器是否是网络。当然,这些东西必须放在下面 #ifdef Q_OS_WIN32.

这看起来很复杂,但我别无他法。我也不确定GetDriveType()的速度有多快,但是如果存在性能问题,则可以始终实现某种缓存。

其他提示

如何将QFileSystemModel滤波器仅用于QDIR ::驱动器。据我所知,这仅列出当地的硬盘驱动器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top