• 4339阅读
  • 3回复

[提问]paintEvent 绘制中文的问题 [复制链接]

上一主题 下一主题
离线tsuibin
 

只看楼主 倒序阅读 楼主  发表于: 2009-10-20
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
我现在有这样一个函数,但是不能保证每一次绘制字幕的时候都成功,经常会出现 中文字符变成问号的情况

void SubTitle::paintEvent(QPaintEvent *event)
{
    QRect rect = event->rect();
    QPainter painter(this);
    bool ok;
    painter.setPen(paraMap.value("textcolor").toInt(&ok,16)); //Qt::red value 0 ~ 19 //captionColor
    painter.setFont(QFont("Arial", paraMap.value("fontsize").toInt()));
    QString message,message2;
    QByteArray tmp;
    message = paraMap.value("message") ;
    tmp.append(message);
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    message2 = codec->toUnicode(tmp);
     //message = paraMap.value("message");
     //message2 = "你好中国";
    painter.drawText((width()-paint_pos),fontMetrics->height(), message2 );
    //painter.drawText((width()-paint_pos),fontMetrics->height(), tr(message2) );
   // painter.drawText((width()-paint_pos),fontMetrics->height(),( paraMap.value("message") ));

   //qDebug() << fontMetrics->height();
    painter.end();
}
红色部分,中间那个message2 如果不加tr,则显示出来的也是问号

我有些不理解……如何使用drawText显示中文呢
离线318065268
只看该作者 1楼 发表于: 2009-10-20
中文显示问题,呵呵,永久的烦恼。
这方面的资料很多,慢慢查一下。
最重要的是,要保证你的环境里面装好了中文字库,建议不管有没装好,再装一个比较通用的中文字库。
Email  rsail@126.com(私人邮箱)
QQ:   318065268
离线jorneyr

只看该作者 2楼 发表于: 2009-10-20
QTextCodec的设置问题, 设置好了, 中文就能正常显示, 不管是不是你自己画上去的.
离线rqzrqh

只看该作者 3楼 发表于: 2009-10-20
PC机上中文显示问题应该是非常好解决的
快速回复
限100 字节
 
上一个 下一个