5

qtアプリに各言語を挿入してさまざまな言語文字列を表示しようとしてQMap<QString, QString>います。これにより、複数の場所で再利用したり、アプリケーション全体のさまざまなコンボボックスに配置したりできます。QMapこれを行うには、CTORで次のように作成します。

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ファイルを作成して同じ方法でマップを挿入すると、次のように表示されます(この別のDialogクラスを同じアプリケーションに含めても)。したがって、アプリがない限り、フォントの問題はありません。さまざまな文字セットをレンダリングする方法を知っていますが、最初の文字セットが文字セットをレンダリングしない理由がわかりません。

最初の機能が機能しないのに2番目の機能が機能する理由を誰かに教えてもらえますか?以下に示す両方のUIファイルで、Designerを確認し、そのロケールが「C、デフォルト」に設定されていることを確認しました。私は他に何が違いを引き起こしているのか理解できないようです。最初のものは機能せず、2番目のものは同じアプリケーション内で機能します。

助けてくれてありがとう!

他のテストダイアログ:

ここに画像の説明を入力してください

4

2 に答える 2

1

あなたのコードは正しいですが、問題はソース ファイルに Unicode 文字を含めることができないことです。明らかに、異なるコーディングを使用しています。

ファイルを UTF-8 として保存すると、すべてが機能するはずです。

ここに画像の説明を入力

于 2013-02-08T16:48:21.773 に答える
0

最初のスクリーンショットでは、コンボボックスで使用されるフォントが2番目のスクリーンショットよりもはるかに大きくなっています。私の推測では、GUIデザイナーまたはコードのいずれかでフォントを変更し、2番目の(機能している)スクリーンショットはデフォルトのフォントを使用しています。フォントサイズを変更したときに、必要なすべてのUnicode文字を含まないフォントに変更した可能性があります。コンボボックスで使用されているフォントを別のフォントに変更してみてください。

于 2013-02-08T16:57:34.937 に答える