急!急!急!关于中文显示的问题,请各位高手帮帮忙!多谢了,在线等待!

weixin_38051012 2019-09-19 12:34:28
想请教下,怎样能在QT3下正确显示出中文呢? 以下是我实现的方法:{...QString str = QString::fromLocal8Bit( text_name);      //text_name是指向一段中文的指针,类型为const char*...}void listButton::paintEvent(QPaintEvent* )                   //listButton是继承QPushButton的类{ ... QPainter* p =new QPainter; drawText->(x, y, w, h, str ); ...}但在界面上显示出来的确实一段乱码,显示英文却没有问题,小弟QT刚入门,请各位高手帮帮忙,指点一下,多谢了!
...全文
9 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38117299 2019-09-19
问题已经解决,  感谢浪漫天使的帮助, 解决方法是我在QT的运行环境下,   export LANG=zh_CN.UTF-8, 就可以正确显示中文了
回复
weixin_38112462 2019-09-19
跟qt没有关系了你看void listButton::setButtonText(QString s){s = *text;                                                                              //QString* text;}void listButton::paintEvent(QPaintEvent* )                   //listButton是继承QPushButton的类{ ... QPainter* p =new QPainter; drawText->(x, y, w, h, QString::fromLocal8Bit(*text)); ...}你觉得 这里的 s = *text;    就是你drawText->(x, y, w, h, QString::fromLocal8Bit(*text)); 里面的*text吗?????!!!!!!!!!
回复
weixin_38111004 2019-09-19
是这样的  因为要从一个文件(是一个列表)中读出一行一行的中文放到一个链表里面,然后显示出来, 所以我写了一个读文件的函数,由于对QT不熟,所以这个读函数是用C写的,返回的是指向中文的一个指针, text就是这个指针. 不知道是不是因为C代码的关系导致显示不正常.
回复
weixin_38088709 2019-09-19
其实如果你想一个按钮上显示中文没有必要费这么大的劲吧1 用国际化 2 如果你的 listButton是间接继承QWidget或直接继承QButton的话,或者本身就是QPushButton或QButton,根本就不用继承用button->setText(QString::fromLocal8Bit("中文嘛"));
回复
weixin_38079250 2019-09-19
那就说明传的过程有问题而不是 drawtext时候的问题 是吧,继续往下查呗我觉得 主要 在 setButtonText你的 s = *text;   是打算做什么,能说说么?
回复
weixin_38077297 2019-09-19
谢谢  这样是可以的 呵呵 可是我需要从外部传一个const char*类型的指针过来,然后显示这个指针指向的中文内容,该如何做呢?麻烦你指点我下,感谢!
回复
weixin_38068013 2019-09-19
void listButton::setButtonText(QString s){s = *text;                                                                              //QString* text;}服了你了别管那么多drawText->(x, y, w, h, QString::fromLocal8Bit("中文")); 试试 好么,先一步一步来 ok?
回复
weixin_38066085 2019-09-19
还是不行,我的做法是:{...listButton->setButtonText( text_name );                       //text_name是指向一段中文的指针,类型为const char*...}void listButton::setButtonText(QString s){s = *text;                                                                              //QString* text;}void listButton::paintEvent(QPaintEvent* )                   //listButton是继承QPushButton的类{ ... QPainter* p =new QPainter; drawText->(x, y, w, h, QString::fromLocal8Bit(*text)); ...}是否是类型不匹配的问题呢?
回复
weixin_38064966 2019-09-19
如何?
回复
weixin_38062058 2019-09-19
我试试
回复
weixin_38062043 2019-09-19
void Form1::paintEvent( QPaintEvent *e ){        QPainter painter(this);        painter.drawText(10,100,QString::fromLocal8Bit("你好马"));}这样不行么?
回复
weixin_38061328 2019-09-19
好像QString没有toUtf8()这个成员函数啊,我编译报错。
回复
weixin_38061090 2019-09-19
谢谢你的回复,我现在正在尝试。
回复
weixin_38053335 2019-09-19
这样试试:drawText->(x, y, w, h, str.toUtf8 ());
回复
相关推荐
发帖
其他技术讨论专区
创建于2021-05-12

120

社区成员

其他技术讨论专区
申请成为版主
帖子事件
创建了帖子
2019-09-19 12:34
社区公告
暂无公告