在QT QTextEdit中粘贴表情符号

时间:2014-09-08 15:39:16

标签: c++ qt user-interface qt4 qt5.3

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

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

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

谢谢。

根据以下有用的答案得出结论:

SOLUTION:

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

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

2 个答案:

答案 0 :(得分:3)

Unicode Standard中有相当数量的 表情符号 字符。 例如,如果您正在Mac OS X 10.9中使用Qt 5.3进行开发,则在文本编辑中粘贴 表情符号 字符应该与粘贴任何其他字符时一样。< / p>

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

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

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

并将其设置为应用程序的字体,如果您愿意,则仅设置为QTextEdit

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

有了这个,您的应用应该能够显示 表情符号

答案 1 :(得分: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.

你应该可以转换粘贴的数据,例如指向由ressource编译器(或磁盘上的映像文件)嵌入到应用程序中的文件的HTML img元素。