QWidget 用于显示带有小图片(图标/表情符号)的文本
Posted
技术标签:
【中文标题】QWidget 用于显示带有小图片(图标/表情符号)的文本【英文标题】:QWidget for showing text with small pictures (icons/emoticons) 【发布时间】:2014-05-05 01:13:33 【问题描述】:这样的小部件存在吗?
我可以基于QLabel
s 和类似于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 用于显示带有小图片(图标/表情符号)的文本的主要内容,如果未能解决你的问题,请参考以下文章