2013-02-08 18 views
5

नहीं दिखाते हैं, मैं प्रत्येक भाषा को 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; 
} 

एप्लिकेशन रन, मैं निम्न देखें:

enter image description here

हालांकि, अगर मैं एक अलग .ui फ़ाइल बनाता हूं और मानचित्र को उसी तरह से सम्मिलित करता हूं, तो मुझे निम्न दिखाई देता है (भले ही मैं इसे से जोड़ूं समान अनुप्रयोग में पैराेट डायलॉग क्लास), स्पष्ट रूप से स्पष्ट रूप से कोई फ़ॉन्ट समस्या नहीं है, जहां तक ​​ऐप यह नहीं जानता कि अलग-अलग चरित्र सेट कैसे प्रस्तुत करें .... फिर भी मैं यह नहीं समझ सकता कि पहला व्यक्ति चरित्र सेट क्यों नहीं प्रस्तुत करेगा ?

क्या कोई मुझे बता सकता है कि पहला काम क्यों नहीं करता है लेकिन दूसरा करता है? मैंने डिज़ाइनर की जांच की है और इसके लोकेल को नीचे दिखाए गए दोनों यूई फाइलों में 'सी, डिफॉल्ट' पर सेट किया गया है। मुझे लगता है कि पहले काम करने के लिए क्या अंतर पैदा कर रहा है, और दूसरा एक ही आवेदन के भीतर काम करता है।

किसी भी मदद के लिए धन्यवाद!

अन्य परीक्षण संवाद:

enter image description here

उत्तर

1

आपका कोड सही है, लेकिन समस्या यह है कि अपने स्रोत फ़ाइल यूनिकोड वर्ण नहीं हो सकते है - जाहिरा तौर पर यह अलग कोडन उपयोग कर रहा है।

फ़ाइल को यूटीएफ -8 के रूप में सहेजें और सबकुछ काम करना चाहिए!

enter image description here

+0

मेरा मानना ​​है कि सभी फाइलें अभी यूटीएफ -8 के रूप में सहेजी गई हैं (हालांकि प्रत्येक फ़ाइल को जांचने का तरीका है और यह कैसे पहले से सहेजा गया है?) क्यूटी निर्माता-> टूल्स> टेक्स्ट एडिटर में फ़ाइल एन्कोडिंग यूटीएफ- 8 अभी अभी। फाइलें मौजूदा प्रोजेक्ट से svn से आईं, इसलिए मुझे यकीन नहीं है कि वे मूल रूप से कैसे सहेजे गए थे। मैं कमांड लाइन (यूनिक्स) के माध्यम से उन्हें यूटीएफ -8 में कैसे परिवर्तित कर सकता हूं? – Tim

+0

यह काम करना चाहिए, हालांकि यह उबंटू 12.04 पर स्पष्ट रूप से काम नहीं कर रहा है - फ़ाइल -i चेतावनी_accept_dialog.cpp चेतावनी_accept_dialog.cpp: टेक्स्ट/एक्स-सी; charset = us-ascii 325 ubu/home/tim/work/src/GUI convmv --notest -fus-ascii -tutf8 चेतावनी_accept_dialog.cpp आपके पर्ल संस्करण में # 37757 # 49830 तैयार है! 326 ubu/home/tim/work/src/GUI फ़ाइल -i चेतावनी_accept_dialog.cpp चेतावनी_accept_dialog.cpp: टेक्स्ट/एक्स-सी; charset = us-ascii बदलना प्रतीत नहीं होता था। मैंने कई combos और अभी भी एक ही परिणाम की कोशिश की। – Tim

+1

QtCreator में मैंने संपादन-> चयनित एन्कोडिंग-> फ़ाइल सहेजें। अभी भी utf8 के रूप में दिखाई नहीं दिया। मैंने पाया कि मुझे नई फाइल जोड़नी है, मेरी पूरी फाइल कॉपी/पेस्ट करें ...और नई फाइल utf8 एन्कोडिंग के तहत सहेजी गई थी और अंततः यह काम किया! – Tim

0

पहले स्क्रीनशॉट में बता गया द्वारा प्रयुक्त फ़ॉन्ट दूसरा स्क्रीनशॉट में से बहुत बड़ा है। मेरा अनुमान है कि आपने या तो जीयूआई डिजाइनर में या कोड में फ़ॉन्ट बदल दिया है और दूसरा (काम कर रहा है) स्क्रीनशॉट डिफ़ॉल्ट फ़ॉन्ट का उपयोग कर रहा है। ऐसा हो सकता है कि जब आपने फ़ॉन्ट आकार बदल दिया हो, तो आपने फ़ॉन्ट को उस चीज़ में भी बदल दिया है जिसमें सभी आवश्यक यूनिकोड वर्ण नहीं हैं। Combobox द्वारा इस्तेमाल किए गए फ़ॉन्ट को किसी और चीज़ में बदलने का प्रयास करें।

संबंधित मुद्दे