如何在QGraphicsTextItem中显示unicode?

时间:2015-05-20 17:58:25

标签: qt unicode qgraphicsitem qgraphicstextitem

我希望能够在QGraphicsTextItem(或其子类)中显示Unicode。

QGraphicsTextItem中设置文字的唯一方法似乎是

setPlainText(text);

尝试

setPlainText(QString::fromUtf8("Caf\x00e9 Frap\x00e9"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
setPlainText("Café Frapé");

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
setPlainText("Caf\x00e9 Frap\x00e9");

我明白了:

Caf? Frap?

似乎无论我做什么(我不确定是否正确),我都没有得到正确的输出......

QGraphicsTextItem支持unicode吗?可能是setPlainText函数有问题 - 但是有什么替代方案? (我查看了setDocument但它也设置了纯文本......)

编辑 - 复制QGraphicsTextItem中的特殊字符,一旦在屏幕上,但仍然无法从代码中放置任何unicode。

2 个答案:

答案 0 :(得分:0)

在继承QGraphicScene的类中,我使用了:

        QString text(QString::fromUtf8(xt.text));
        ...
        QGraphicsTextItem *t = addText(text = text.replace("\\n", "\n"), font);

点源是 utf8

digraph so {
Café -> Frapé
}

渲染:

enter image description here

您可以找到here C ++代码。

答案 1 :(得分:-1)

我认为你应该使用

QGraphicsTextItem item.
item.setHtml( "Café Frapé" );

功能而不是提到的。阅读此QGraphicsTextItem::setHtml