LoveUnix » 编程开发 & Rational » 怎样在qt中正常显示中文
让LU留住您的每

一天 让LU博客留住您的每一天
2004-4-20 14:13 kurapikar
举个例子,我写一个简单的pushbutton<br />怎样让这个button上的中文内容显示出来<br /><br />我出的是乱码,哪位朋友有个类似经历的<br />帮帮,蛮尴尬的问题啊

2004-4-20 21:12 iessunxj
settext(tr(&quot;中文&quot;))

2004-4-21 08:46 kurapikar
不行的,它不认,出来是乱码<br /><br />代码你看看:<br />#include &lt;qapplication.h&gt; <br />#include &lt;qwidget.h&gt; <br />#include &lt;qpushbutton.h&gt; <br />#include &lt;qfont.h&gt; <br />#include &lt;qstring.h&gt; <br /><br />class MyMainWindow :public QWidget <br />{ <br />public: <br />MyMainWindow(); <br />private: <br />QPushButton *b1; <br />}; <br /><br />MyMainWindow::MyMainWindow() <br />{ <br />//QString ch; <br /><br />b1 = new QPushButton( this,&quot;b1&quot; ); <br />b1-&gt;setText( tr( &quot; 中文&quot; ) ); <br />b1-&gt;setGeometry( 20, 20, 300, 300 ); <br /><br />b1-&gt;setFont( QFont( &quot;Times&quot;, 18, QFont::Bold ) ); <br /><br />} <br /><br />void main( int argc, char **argv ) <br />{ <br />QApplication a( argc, argv ); <br />MyMainWindow w; <br />a.setMainWidget( &amp;w ); <br />w.show(); <br />a.exec(); <br />} <br /><br /><br />其中b1-&gt;setText( tr( &quot; 中文&quot; ) ); 这句是用来显示button的内容的<br />不过出来是乱码

2004-4-21 09:07 iessunxj
在WINDOWS上应该没有问题,如果在UNIX上要看平台,选择不同的字符集登录,一般选GB231280。另外和你主程序设置的字体也有很大关系。在TRU64上主程序字体最好设置为宋体11号,在SOILARYS上最好设置为INTERFACE12号,在AIX上最好设置为细宋12号,这只是我个人的经验,具体还要自己试一下,可能操作系统的版本不一样显示的也不太一样。

2004-4-21 09:22 iessunxj
WINDOWS上修改如下:<br />MyMainWindow::MyMainWindow() <br />{ <br />//QString ch; <br /><br />b1 = new QPushButton( this,&quot;b1&quot; ); <br />b1-&gt;setText( tr( &quot; 中文&quot; ) ); <br />b1-&gt;setGeometry( 20, 20, 300, 300 ); <br /><br />//b1-&gt;setFont( QFont( &quot;Times&quot;, 18, QFont::Bold ) ); <br /><br />} <br /><br />void main( int argc, char **argv ) <br />{ <br />        QGb18030Codec Code;<br />        QApplication a( argc, argv );<br />        a.setDefaultCodec(&amp;Code);<br /><br />MyMainWindow w; <br />a.setMainWidget( &amp;w ); <br />w.show(); <br />a.exec(); <br />}

2004-4-21 12:09 kurapikar
谢谢,找到解决的办法了<br /> <br />补上这两句就可以了 <br />#include &lt;qtextcodec.h&gt; <br />QTextCodec::setCodecForTr(QTextCodec::codecForName(&quot;GB2312&quot;)) ;

2006-3-28 12:54 randypig
使用QTextCodec类.
如果你的cpp文件是gb18030或者gb2312的话,就使用下面的:
QTextCodec* pcodec=QTextCodec::codecForName("gb18030") ; //gb2312类轼.
然后:
pcodec->toUnicode("你要显示的中文"); //这里返回一个QString,我记得是。

如果你的文件是utf8,就这样 QTextCodec* pcodec=QTextCodec::codecForName("utf8") ;
然后和上面的相同。

2008-7-23 22:09 wenjunraul
楼主我是你那样做的,但是怎么他说又错误,它的意思好象是说setCodecForTr这个不存在,能告诉我是什么原因吗??很急啊!!!谢谢!!!

2008-7-23 22:09 wenjunraul
看到后请告诉我以下很急!!!!我是初学者,谢谢!!!!!

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.