Próbuję wyświetlać różne ciągi językowe w mojej aplikacji qt, wstawiając każdy język do QMap<QString, QString>
, aby można go było ponownie użyć w kilku miejscach i umieścić w różnych polach kombi w całej aplikacji . Robię to przez tworzenia QMap
podobnie jak w konstruktor:Znaki Unicode w aplikacji qt nie wyświetlają się
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");
Następnie wstawić je do pola kombi:
QMap<QString, QString>::const_iterator it = m_langMap.begin();
while (it != m_langMap.end())
{
ui->comboBox->addItem(it.key());
++it;
}
Kiedy biegnie aplikacji, widzę następujące:
Jeśli jednak utworzę oddzielny plik .ui i wstawię mapę w ten sam sposób, widzę następujące elementy (nawet jeśli uwzględnię to jako parate klasy Dialog do tej samej aplikacji), więc wyraźnie nie ma problemu z czcionką, o ile aplikacja nie wie, jak renderować różne zestawy znaków ... ale nie mogę zrozumieć, dlaczego pierwszy nie renderuje zestawów znaków ?
Czy ktoś może mi powiedzieć, dlaczego pierwszy nie działa, a drugi nie? Sprawdziłem Designer i jego Locale jest ustawione na "C, Default" w obu plikach UI, które pokazałem poniżej. Nie mogę się zorientować, co jeszcze powoduje różnicę, ponieważ pierwsza nie działa, a druga działa w tej samej aplikacji.
Dzięki za pomoc!
Drugi Dialog Test:
Wierzę, że wszystkie pliki są teraz zapisywane jako UTF-8 (mimo że istnieje sposób sprawdzenia każdego pliku i jak został już zapisany?) W Qt Creator-> Narzędzia> Edytor tekstu, kodowanie plików jest ustawione na UTF- 8 właśnie teraz. Pliki pochodzą z svn z istniejącego projektu, więc nie jestem pewien, w jaki sposób zostały pierwotnie zapisane. Jak mogę przekonwertować je na UTF-8 za pomocą wiersza poleceń (Unix)? – Tim
To ma działać, ale najwyraźniej nie działa na Ubuntu 12.04 - plik -i warning_accept_dialog.cpp warning_accept_dialog.cpp: text/x-c; charset = us-ascii 325 ubu/home/tim/work/src/GUI convmv --notest -fus-ascii -tutf8 warning_accept_dialog.cpp Twoja wersja Perla ma pchle # 37757 # 49830 Gotowy! 326 ubu/home/tim/work/src/plik GUI -i warning_accept_dialog.cpp warning_accept_dialog.cpp: text/x-c; charset = us-ascii nie zmieniło się. Spróbowałem kilku combosów i wciąż osiągałem ten sam rezultat. – Tim
W QtCreator próbowałem Edit-> Selected Encoding-> Save File. Nadal nie pojawił się jako utf8. Zauważyłem, że muszę dodać nowy plik, skopiować/wkleić cały mój plik ...a nowy plik został zapisany pod kodowaniem utf8 i nareszcie działał! – Tim