我现在有这样一个函数,但是不能保证每一次绘制字幕的时候都成功,经常会出现 中文字符变成问号的情况
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显示中文呢