Я пытаюсь использовать сопоставление с именами языков в локальные
имена файлов, например:
QMap<QString, QString> map;
map.insert("Русский", "russian");
Тем не менее, когда я выкидываю значения, получается NULL:
QMap<QString, QString>::const_iterator it = map.begin();
while (it != map.end())
{
qDebug() << "Language: " << it.key();
++it;
}
Language: ""
Я попытался установить QTextCodec следующим образом:
QTextCodec * codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
m_langMap.insert(codec->fromUnicode("Русский"), "russian");
Все же те же результаты. Что я здесь не так делаю? Мне очень нужна эта карта, чтобы
использовать в нескольких местах без репликации кода.
Спасибо
== РЕДАКТИРОВАТЬ ==
Извините, подумал, что я редактировал свой собственный. Вот нерабочий код, примерно идентичный
короткий образец, который я сделал, который работает. Рабочий файл — это файл намного большего размера.
в CTOR:
m_ui->setupUi(this);
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())
{
m_form.language_combo->addItem(it.key());
++it;
}
== РЕДАКТИРОВАТЬ 2 ===
Я создал новый вопрос здесь:
Это работает:
map.insert(QString::fromWCharArray(L"Русский"), "russian");
Редактировать:
Использование QStringList тоже работает:
QStringList sl;
sl << QString::fromWCharArray(L"Русский")
<< QString::fromWCharArray(L"English")
<< QString::fromWCharArray(L"日本語");
ui->comboBox->addItems(sl);
Других решений пока нет …