2013-03-26 139 views
1

我正在使用Qt的QFileDialog来让用户添加文件,但我遇到了从网络驱动器添加文件的问题。从getOpenFileName()函数获得的路径始终是本地路径。因此,如果网络共享\\share1在Windows中安装为J:\,我将从J:\开始获取路径。在Qt中获取文件的网络路径

这是没有用的,因为人们可能在不同的字母下安装了相同的共享,并且当一个用户向数据库添加路径时,我希望其他用户能够访问该路径而无需猜测它应该在哪个服务器上。

+0

不幸的是,当您将远程目录挂载为本地驱动器时,文件系统并不知道它不是本地驱动器。是否有可能将这样的文件复制到一个地方,每个人都可以访问,并在你的数据库中存储一个新的路径? – Amartel 2013-03-26 12:49:04

+0

[QSystemStorageInfo](http://doc.qt.digia.com/qtmobility/qsystemstorageinfo.html)类(Qt Mobility附加组件)几乎可以做到这一点。它可以返回本地驱动器的GUID,并告诉你它是什么类型的驱动器(本地,网络等),但类方法[uriForDrive使用GetVolumeNameForVolumeMountPoint](https://qt.gitorious.org/qt-mobility/qt -mobility/blobs/v1.2.0/src/systeminfo/qsysteminfo_win.cpp),它不适用于映射到网络路径的驱动器。 – Linville 2013-03-26 17:05:44

回答

1

看来你不能单独使用Qt,你需要使用WinAPI。检查路径是否包含:字符,然后使用WNetGetConnection找出网络路径。

+0

有没有在某处使用的例子?我的google-fu让我失望。我从来不必与之前的本地Windows API进行交互。 – 2013-03-26 21:35:48

+0

这里是一个C++的例子:http://msdn.microsoft.com/en-us/library/windows/desktop/aa385374%28v=vs.85%29.aspx – 2013-03-26 21:47:30

+0

也用单词'WNetGetConnection'和'QString'搜索产生良好的结果。 – 2013-03-26 21:55:51