QWidget 用于显示带有小图片(图标/表情符号)的文本

Posted

技术标签:

【中文标题】QWidget 用于显示带有小图片(图标/表情符号)的文本【英文标题】:QWidget for showing text with small pictures (icons/emoticons) 【发布时间】:2014-05-05 01:13:33 【问题描述】:

这样的小部件存在吗?

我可以基于QLabels 和类似于http://qt-project.org/doc/qt-5/qtwidgets-layouts-flowlayout-example.html 的布局编写自己的小部件,但是我无法选择所有文本并复制(因为这只是一组标签)。

【问题讨论】:

为什么您认为无法在 QLabel 中选择文本? 也许可以,但我不能同时在多个标签中进行。 【参考方案1】:

QLabel 的text property 可以在其中包含富文本,而img tag is supported 在Qt 的富文本中。

例如,

QLabel myLabel("<img src=\":/foo.png\"> Hello, World!");

【讨论】:

【参考方案2】:

您可以使用QTextEdit,当您在其中输入某些特定文本时,它会变为笑脸或表情符号等图像。您应该对textChanged() 信号做出反应并使用QTextCursor 将文本替换字符串修改为一些HTML 图像标签:

QObject::connect(textEdit, SIGNAL(textChanged()), this, SLOT(changePixmap()),Qt::QueuedConnection) ;

void CSmsWidget::changePixmap()

     QRegExp reg(":\\)"); // you can improve regular expression
     QTextCursor cursor(textEdit->document()->find(reg));

     if (!cursor.isNull()) 
     
         cursor.insertHtml("<img src=\":/images/happy_smilie.png\">");
     

【讨论】:

以上是关于QWidget 用于显示带有小图片(图标/表情符号)的文本的主要内容,如果未能解决你的问题,请参考以下文章

微信公众号自定义菜单栏如何加emoji表情等图标

带有大图片、大图标和小图标的通知

emoji纸飞机表情符号怎么输入

CSDN写作表情emoji大全

如何在角度/离子应用程序中显示表情符号

带有 gif 和表情符号以及图像 Java 的聊天室