2016-12-25 119 views
0

上沒有的特殊字符我要顯示一些特殊字符,如¼,½等在一個QTextEdit這不在QWERTY keyboard.I我能夠在的QTextEdit並且還鍵入這些字符能夠粘貼它們。但是當我嘗試以編程方式設置這些字符時,QTextEdit會顯示一個額外的字符'Â'。的QTextEdit不顯示鍵盤

而打字和粘貼我不明白這個問題。這些字符用一些Alt + [code]代碼鍵入。

我使用Qt 4.8的Windows 8 64位。

#include<QtGui> 

int main(int argc, char *argv[]) 
{ 
QApplication a(argc, argv); 
QTextEdit t; 
    t.setPlainText("¼2½ \n");    // QTextEdit displays=> ¼2½ 
    // t.setHtml("¼2½ \n");    // QTextEdit displays=> ¼2½ 
    // t.insertHtml("¼2½ \n");   // QTextEdit displays=> ¼2½ 
    // t.insertPlainText("¼2½ \n");  // QTextEdit displays=> ¼2½ 
// also tried setHtml() with HTML code which works in Firefox didn't help me 
    t.show(); 
    return a.exec(); 
} 

我該如何將這些字符以編程方式放在QTextEdit中而沒有這個額外的字符?

回答

0

使用QTextCodec來以UTF-8編碼顯示字符。在地方

#include <QTextCodec> 
... 
QTextCodec* codec=QTextCodec::codecForName("UTF-8"); 
// QTextCodec::setCodecForLocale(codec); //if you want everything to be in UTF-8 
QTextCodec::setCodecForCStrings(codec); 
QApplication a(argc, argv); 
... 

或轉換的字符:需要UTF-8編碼寫入

t.setPlainText(QObject::trUtf8("¼2½ \n")); 
+0

將它整個的應用嗎? QTextCodec如何與QTextEdit相關?我的意思是我們不需要QTextEdit/QApplication上的setter()函數。 – stackOverflow

+0

我編輯了我的答案。是的,它會在全球範圍內運作。 QTextCodec爲整個應用程序設置編碼,所以它應該在main()中設置。或者,請參閱我的答案的第二部分。 – 2016-12-25 14:20:52

2

你的源代碼,您應該使用Qt 4,你不會使用Qt 5或QString::fromUtf8使用QStringLiteral那麼問題就來了。

例如爲:

t.setPlainText(QStringLiteral("¼, ½")); // Qt 5 
t.setPlainText(QString::fromUtf8("¼, ½")); // Qt 4 

確保您使用設置爲文件爲UTF-8編碼的編輯器,而不是拉丁語1等