6

我正在尝试将表情符号粘贴到 QT QTextEdit 框中,但它没有被识别并且显示为 ??? 或者 [][]

我不是在谈论笑脸,我在谈论表情符号。

如何确保 QT 的 QTextEdit 接受表情符号并正确显示它们?

谢谢你。

根据以下有用的答案得到它:

解决方案:

    QFontDatabase fontDB;
    fontDB.addApplicationFont(":/Resources/fonts/seguisym.ttf");

    QApplication::setFont(QFont(QStringLiteral("Segoe UI Symbol")));
4

2 回答 2

3

Unicode 标准中有相当多的表情符号字符。例如,如果您在 Mac OS X 10.9 中使用 Qt 5.3 进行开发,那么在文本编辑中粘贴表情符号字符应该与粘贴任何其他字符时一样。

您的应用程序显示?'s 和/或[]'s 的原因是因为当前字体(可能是默认系统字体)不提供表情符号“字符”的表示。你可以在网上找到合适的字体。检查以供参考。

然后您可以将字体添加到您的 Qt 应用程序

QFontDatabase fontDB;
fontDB.addApplicationFont(":/A Font Supporting Emoji.ttf");

并将其设置为您的应用程序的字体,或者仅在QTextEdit您喜欢的情况下设置为您的字体

setFont(QFont(QStringLiteral("A Font Supporting Emoji")));

有了这个,您的应用应该能够显示emoji

于 2014-09-08T19:49:54.203 回答
0

QTextEdit::paste() 的 Qt 文档说:To change the behavior of this function, i.e. to modify what QTextEdit can paste and how it is being pasted, reimplement the virtual canInsertFromMimeData() and insertFromMimeData() functions.

在那里,您应该能够将粘贴的数据转换为 HTML img 元素,该元素指向由 ressource 编译器嵌入到应用程序中的文件(或磁盘上的图像文件)。

于 2014-09-08T19:43:57.360 回答