如何用QGraphicsTextItem渲染表情符号?

时间:2016-06-23 20:05:26

标签: qt qgraphicsview

这是事情。我为我的办公室创建了一个小Qt聊天应用程序。它仅适用于LAN连接的客户端。我通过使用QGraphicsTextItem为气泡内的消息实现了这一点,气泡是一个圆形的矩形。

要真正完成它,我需要添加表情符号。所有类似聊天的应用程序都有它们。问题是我不知道如何实施它们。我读过他们是unicode标准的一部分。 (此链接的unicode代码证明了它http://unicode.org/emoji/charts/full-emoji-list.html),但我不知道如何在QGraphicsTextItem中呈现它。它甚至可能吗?

我可以非常非常轻松地分离用户字符串并实际使用多个文本项来渲染由emojis y分隔的字符串的部分,然后将表情符号本身作为单独的图形实体,但我宁愿不这样做如果我可以避免它。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

没有什么可做的:表情符号只是字符,你可以将它们从" Brow"中复制粘贴。 page you cited中的列,就像您使用任何其他字符一样从这个答案(包括表情符号!)。理智的编译器假定您的源是UTF-8编码的,大多数编辑器都是如此,因此它将是透明的。如果安装了相关字体,它就可以正常工作。

// https://github.com/KubaO/stackoverflown/tree/master/questions/emoji-text-item-38000855
#include <QtWidgets>

int main(int argc, char ** argv) {
   QApplication app{argc, argv};
   QGraphicsScene scene;
   QGraphicsView view{&scene};
   QGraphicsTextItem item{QStringLiteral("I'm a happy . ")};
   scene.addItem(&item);
   view.ensureVisible(scene.sceneRect());
   view.show();
   return app.exec();
}