2011-08-01 31 views
0

我試圖使用QFileDialog :: getOpenFileName和一個定義了tr的xml過濾器(「XML Files(* .xml)」 )要求用戶選擇一個XML文件。C++/QT - QFileDialog :: getOpenFileName filter * .xml禁用名稱中包含日語字符的文件

但是,如果目錄中有名稱中含有日語字符的文件(例如:ラドクリフ.xml),則文件顯示爲禁用狀態,因此用戶無法選擇該文件。其他文件(如a.xml,b.xml)顯示爲可選擇的。

這究竟是爲什麼?有沒有辦法來解決這個問題 ?

謝謝!

+1

這是一個錯字,對吧?它應該是'tr(「XML文件(* .xml)」)' – koan

+0

是的,你是對的。 – Anonymous

+0

我想你將需要發佈整個文件對話框代碼,以便我們進一步瞭解你的問題 – koan

回答

1

的文件不是 「ラドクリフ.XML」 是 「ラドクリフ.XML」 注意在文件名末尾的XML不是ASCII;它們是全寬羅馬字母,即UniCode codepoints 0xFF00-0xFFEF

解決方法是讓用戶在最後輸入.xml時切換回ASCII輸入,或者如果您的軟件是日語本地化的,則將全寬「* .xml」添加到您的過濾器列表中。

+0

聰明!非常感謝,但我會在嘗試它後立即證實此答案:) – Anonymous

+0

不幸的是,它不是這樣 - 我將終端的編碼更改爲ASCII並重新檢查。片假名中的文件名部分被奇怪地顯示出來(正如ASCII所預期的那樣),但是.xml保持爲.xml,所以這必定意味着.xml不是全寬的.xml。 – Anonymous

+0

另外,爲了確認你的答案,我已經通過(「\ *。\ *」,「*」)作爲過濾器,並且沒有通過任何過濾器(在這種情況下,所有文件都應該根據QFileDialog顯示),但無濟於事。這些文件仍然無法選擇!看起來像Mac上的Qt Bug給我。 – Anonymous

相關問題