如何使用 QGraphicsTextItem 渲染表情符号?

How to render emoji's in with QGraphicsTextItem?

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

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

我可以做一个非常非常体力的工作来分离用户字符串,实际上使用多个文本项来呈现由表情符号 y 分隔的字符串部分,然后将表情符号本身作为一个单独的图形实体,但我宁愿不这样做如果我能避免的话就这样做。

有什么想法吗?

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

// https://github.com/KubaO/Whosebugn/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();
}