2014-03-28 40 views
2

我請求用戶選擇與QFileDialog的文件夾:QFileDialog沒有顯示後臺打印文件夾

QString directory = QFileDialog::getExistingDirectory(this,"Caption","", 
        QFileDialog::ShowDirsOnly); 

我希望用戶能夠選擇所有文件夾,但C:/在Windows/System32下/卷軸/不能用QFileDialog找到,我懷疑可能有其他人。

我試圖設置國旗QFileDialog::HideNameFilterDetails爲了查看隱藏的文件,但是這並沒有辦法。

有沒有解決這個問題的方法?

C:/Windows/System 32/spool does not exist in QFileDialog

​​

回答

1

這似乎是一個問題,當你運行在64位Windows的32位應用程序。如果使用本地x64編譯器編譯應用程序,您應該能夠看到假脫機文件夾。最糟糕的情況是,您可以編寫一個簡單的64位原生應用程序來顯示文件夾瀏覽器,並讓32位應用程序運行並與64位應用程序通信以獲取結果。

我希望禁用WOW64 File System Redirector就足夠了,但它沒有幫助。根據this answer,如果您使用Wow64DisableWow64FsRedirection來禁用進程中所有線程的重定向,但可能會有效,但即使回答問題的人也不建議使用此方法。

+0

我不知道我的客戶端是否是32位64位機器,但我猜32.所以你說如果我編譯32位,我可以看到在32位的文件夾權利? 我不太想資助那些黑客,我寧願找到一種解決方法,比如騎乘64應用程序。謝謝你的回答 – Attaque

+0

如果你的Windows操作系統是64位的,但你的應用程序是32位的,那麼這個文件夾不會顯示出來。如果您將應用程序構建爲64位版本,則可以看到該文件夾​​很好。 – deGoot

+0

好的。再次感謝你。 – Attaque

0

不能使用靜態函數來查看所有文件夾。 QFileDialog在幕後進行了一些額外的過濾,並且使用靜態函數getExistingDirectory不能以任何明顯的方式關閉此過濾。

你可以看到所有文件夾,包括隱藏的:

QFileDialog fd; 
fd.setFilter(QDir::Hidden); 
fd.setFileMode(QFileDialog::Directory); 
fd.exec(); 
QString directory = fd.directory().path(); 
+0

感謝您的評論,但我仍然無法找到該文件夾​​:/ – Attaque

+0

您是否可以使用上面的代碼打開假脫機文件夾? – Attaque

+0

我能夠看到每個文件夾。我有Linux。 – Nejat

相關問題