我試圖通過將每種語言爲QMap<QString, QString>
因此它可以在多個地方重新使用,以顯示我的Qt應用程序不同的語言字符串和整個應用程序放入不同的組合框。我通過 創建QMap
喜歡這樣做,所以在CTOR:Unicode字符不顯示
m_langMap.insert(QString::fromWCharArray(L"English"), "english");
m_langMap.insert(QString::fromWCharArray(L"Dansk"), "dansk");
m_langMap.insert(QString::fromWCharArray(L"Nederlands"), "dutch");
m_langMap.insert(QString::fromWCharArray(L"Čeština"), "czeck");
m_langMap.insert(QString::fromWCharArray(L"Slovenský"), "slovak");
m_langMap.insert(QString::fromWCharArray(L"Magyar"), "hungarian");
m_langMap.insert(QString::fromWCharArray(L"Român"), "romanian");
m_langMap.insert(QString::fromWCharArray(L"Latviešu"), "latvian");
m_langMap.insert(QString::fromWCharArray(L"Lietuvių"), "lithuanian");
m_langMap.insert(QString::fromWCharArray(L"Polski"), "polish");
m_langMap.insert(QString::fromWCharArray(L"Português"), "portuguese");
m_langMap.insert(QString::fromWCharArray(L"Español"), "spanish");
m_langMap.insert(QString::fromWCharArray(L"Français"), "french");
m_langMap.insert(QString::fromWCharArray(L"Italiano"), "italian");
m_langMap.insert(QString::fromWCharArray(L"Svenska"), "swedish");
m_langMap.insert(QString::fromWCharArray(L"Русский"), "russian");
m_langMap.insert(QString::fromWCharArray(L"Українська"), "ukranian");
m_langMap.insert(QString::fromWCharArray(L"Русский"), "russian");
m_langMap.insert(QString::fromWCharArray(L"中文"), "chinese");
m_langMap.insert(QString::fromWCharArray(L"日本語"), "japanese");
我然後將它們插入到組合框:
QMap<QString, QString>::const_iterator it = m_langMap.begin();
while (it != m_langMap.end())
{
ui->comboBox->addItem(it.key());
++it;
}
當應用程序運行時,我看到以下內容:
但是,如果我創建一個單獨的.ui文件並以相同的方式插入映射,我會看到以下內容(即使我包含此se parate對話框類到相同的應用程序),所以很明顯,沒有字體的問題,只要在App不知道如何呈現不同的字符集....但我無法弄清楚,爲什麼第一個將不渲染字符集?
誰能告訴我爲什麼第一次不工作,但第二個呢?我在下面顯示的兩個UI文件中檢查了設計器,並且它的語言環境設置爲'C,默認'。我似乎無法弄清楚還有哪些因素會導致第一個不能工作,第二個可以在同一個應用程序中工作。
感謝您的幫助!
其他測試對話框:
我相信現在所有的文件都保存爲UTF-8(雖然有沒有辦法檢查每個文件以及它的保存方式?)在Qt Creator-> Tools> Text Editor中,文件編碼設置爲UTF- 8現在。這些文件來自現有項目的svn,所以我不確定它們最初是如何保存的。我如何通過命令行(Unix)將它們轉換爲UTF-8? – Tim 2013-02-08 17:39:44
這應該是工作,但它不工作在Ubuntu 12.04顯然 - 文件-i warning_accept_dialog.cpp warning_accept_dialog.cpp:文本/ X - C; charset = us-ascii 325 ubu/home/tim/work/src/GUI convmv --notest -fus-ascii -tutf8 warning_accept_dialog.cpp 你的Perl版本有跳蚤#37757#49830 準備就緒! 326 ubu/home/tim/work/src/GUI文件-i warning_accept_dialog.cpp warning_accept_dialog.cpp:text/x-c; charset = us-ascii似乎沒有改變。我曾嘗試過幾次連擊,結果仍然相同。 – Tim 2013-02-08 18:18:11
在QtCreator我試圖編輯 - >選擇Encoding->保存文件。仍然沒有顯示爲utf8。我發現我不得不添加新文件,複製/粘貼我的整個文件...並且新文件保存在utf8編碼下,並且終於奏效了! – Tim 2013-02-08 19:05:31