• 5705阅读
  • 14回复

[提问]急!急!急!关于中文显示的问题,请各位高手帮帮忙!多谢了,在线等待! [复制链接]

上一主题 下一主题
离线qiudeyezi
 
只看楼主 倒序阅读 楼主  发表于: 2009-02-23
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
想请教下,怎样能在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刚入门,请各位高手帮帮忙,指点一下,多谢了!
离线sundp

只看该作者 1楼 发表于: 2009-02-23
这样试试:
drawText->(x, y, w, h, str.toUtf8 ());
人境结庐<http://sundp70.blog.163.com>心远地偏
离线qiudeyezi
只看该作者 2楼 发表于: 2009-02-23
谢谢你的回复,我现在正在尝试。
离线qiudeyezi
只看该作者 3楼 发表于: 2009-02-23
好像QString没有toUtf8()这个成员函数啊,我编译报错。
离线浪漫天使
只看该作者 4楼 发表于: 2009-02-23
void Form1::paintEvent( QPaintEvent *e )
{
        QPainter painter(this);
        painter.drawText(10,100,QString::fromLocal8Bit("你好马"));
}
这样不行么?
离线qiudeyezi
只看该作者 5楼 发表于: 2009-02-23
我试试
离线浪漫天使
只看该作者 6楼 发表于: 2009-02-23
如何?
离线qiudeyezi
只看该作者 7楼 发表于: 2009-02-23
还是不行,我的做法是:

{
...
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));

...

}

是否是类型不匹配的问题呢?
离线浪漫天使
只看该作者 8楼 发表于: 2009-02-23
void listButton::setButtonText(QString s)
{

s = *text;                                                                              //QString* text;

}
服了你了
别管那么多
drawText->(x, y, w, h, QString::fromLocal8Bit("中文")); 试试 好么,先一步一步来 ok?
离线qiudeyezi
只看该作者 9楼 发表于: 2009-02-23
谢谢  这样是可以的 呵呵 可是我需要从外部传一个const char*类型的指针过来,然后显示这个指针指向的中文内容,该如何做呢?麻烦你指点我下,感谢!
离线浪漫天使
只看该作者 10楼 发表于: 2009-02-24
那就说明传的过程有问题而不是 drawtext时候的问题 是吧,
继续往下查呗
我觉得 主要 在 setButtonText
你的
s = *text;  
是打算做什么,能说说么?
离线浪漫天使
只看该作者 11楼 发表于: 2009-02-24
其实如果你想一个按钮上显示中文没有必要费这么大的劲吧
1 用国际化
2 如果你的 listButton是间接继承QWidget或直接继承QButton的话,或者本身就是QPushButton或QButton,根本就不用继承
用button->setText(QString::fromLocal8Bit("中文嘛"));
离线qiudeyezi
只看该作者 12楼 发表于: 2009-02-24
是这样的  因为要从一个文件(是一个列表)中读出一行一行的中文放到一个链表里面,然后显示出来, 所以我写了一个读文件的函数,由于对QT不熟,所以这个读函数是用C写的,返回的是指向中文的一个指针, text就是这个指针. 不知道是不是因为C代码的关系导致显示不正常.
离线浪漫天使
只看该作者 13楼 发表于: 2009-02-24
跟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吗
?????!!!!!!!!!
离线qiudeyezi
只看该作者 14楼 发表于: 2009-02-25
问题已经解决,  感谢浪漫天使的帮助, 解决方法是我在QT的运行环境下,   export LANG=zh_CN.UTF-8, 就可以正确显示中文了
快速回复
限100 字节
 
上一个 下一个