qmap unicode qstring not working
qmap unicode qstring not working
我正在尝试使用从语言名称到本地名称的映射文件名,例如:
QMap<QString, QString> map;
map.insert("Русский", "russian");
然而,当我转储这些值时,结果是空的:
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字符不显示
这是有效的:
map.insert(QString::fromWCharArray(L"Русский"), "russian");
编辑:
使用QStringList也有效:
QStringList sl;
sl << QString::fromWCharArray(L"Русский")
<< QString::fromWCharArray(L"English")
<< QString::fromWCharArray(L"日本語");
ui->comboBox->addItems(sl);
相关文章:
- GDB - strcmp not working: __strcmp_sse2_unaligned
- QT qScriptConnect is not working
- QDesktopServices::openUrl() not working Qt
- "Configure: Error: Could Not Find a Working Compiler, See config.log For Details"
- C++ std::set ordering not working with customer class*
- C++ SetWindowText not working
- visual studio 2012 c++ hello world - iostream not working
- getGravity not working?
- Opencv findcontours CV_RETR_EXTERNAL not working
- c++ srand() not working
- std::queue::empty() not working?
- BCB swprintf not working
- 将类型作为指向另一个类的对象的指针的泛型类-NOT WORKING
- LoadLibrary is not working
- gluUnProject not working
- C++ catch bad_alloc not working
- updatelayeredwindow not working
- OpenMP set_num_threads() is not working
- glOrtho not working
- Cuda atomicInc not working