2013-03-26 137 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