1

言語名からローカル ファイル名へのマッピングを使用しようとしています。たとえば、次のようになります。

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 ===

ここに新しい質問を作成しました:

Qt アプリの Unicode 文字が表示されない

4

1 に答える 1

1

これは機能します:

map.insert(QString::fromWCharArray(L"Русский"), "russian");

編集:

QStringList の使用も機能します。

QStringList sl;
sl << QString::fromWCharArray(L"Русский")
   << QString::fromWCharArray(L"English")
   << QString::fromWCharArray(L"日本語");
ui->comboBox->addItems(sl);
于 2013-02-04T21:17:20.200 に答える