Sto provando a visualizzare stringhe di lingua diverse nella mia app qt inserendo ciascuna lingua in un QMap<QString, QString>
in modo che possa essere riutilizzato in più posizioni e inserito in diverse caselle combinate attraverso l'applicazione . Faccio questo creando il QMap
in questo modo nel CTOR:I caratteri Unicode nell'app qt non vengono visualizzati
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");
Ho poi inserirle nella casella combinata:
QMap<QString, QString>::const_iterator it = m_langMap.begin();
while (it != m_langMap.end())
{
ui->comboBox->addItem(it.key());
++it;
}
Durante l'esecuzione di applicazioni, compaiono i seguenti:
Tuttavia, se creo un file .ui separato e inserisco la mappa nello stesso modo, vedo quanto segue (anche se includo questo se parate Dialog class nella stessa applicazione), quindi chiaramente non ci sono problemi di font per quanto riguarda l'App non sapendo come renderizzare i diversi set di caratteri .... eppure non riesco a capire perché il primo non renderà i set di caratteri ?
Qualcuno può dirmi perché il primo non funziona, ma il secondo lo fa? Ho controllato Designer e il suo Locale è impostato su "C, Default" in entrambi i file ui che ho mostrato di seguito. Non riesco a capire quale altro sia la causa della differenza per il primo a non funzionare, e il secondo funziona all'interno della stessa applicazione.
Grazie per qualsiasi aiuto!
L'altra finestra di dialogo di prova:
Credo che tutti i file siano salvati come UTF-8 in questo momento (anche se c'è un modo per controllare ogni file e come è già stato salvato?) In Creatore Qt -> Strumenti> Editor di testo le codifiche dei file sono impostate su UTF- 8 in questo momento. I file provenivano da svn da un progetto esistente, quindi non sono sicuro di come sono stati inizialmente salvati. Come posso convertirli in UTF-8 tramite la riga di comando (Unix)? – Tim
Questo dovrebbe funzionare, ma non funziona su Ubuntu 12.04 apparentemente - file -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 La tua versione Perl ha pulci # 37757 # 49830 Pronto! 326 ubu/home/tim/work/src/file GUI -i warning_accept_dialog.cpp warning_accept_dialog.cpp: text/x-c; charset = us-ascii non sembra cambiare. Ho provato diverse combo e ancora lo stesso risultato. – Tim
In QtCreator ho provato Modifica-> Codifica selezionata-> Salva file. Ancora non si è presentato come utf8. Ho trovato che dovevo aggiungere un nuovo file, copiare/incollare il mio intero file ...e il nuovo file è stato salvato con la codifica utf8 e finalmente ha funzionato! – Tim