我正在开发一个 IM 工具,作为它的一部分,我必须开发一个BubbleChatWidget
所有消息项都有一个bubble-like
背景图像。我以为我可以实现我的目标QTextEidt
,但我不知道如何给出“QTextFrame”或QTextBlock
背景图像。
所以我的问题是如何给予QTextFrame
or QTextBlock
背景图像QTextEdit
?If QTextEdit
无法满足我的要求,如何与其他人一起实现我的目标Qt techniques
?
The BubbleChatWidget
可能包含clickable
文字或图片。而且你不能忘记这样一个事实BubbleChatWidget
可能包含数千个项目。
下图显示了我想要的。
Qt 样式表非常适合实现您想要的目标。
解决方案是使用一个边框图像 http://qt-project.org/doc/qt-5/stylesheet-reference.html#border-image-prop。幸运的是,您可以使用样式表来做到这一点,并且可以设置样式QTextEdit
s.
关于造型QTextBlock
s or QTextFrame
s: A QTextEdit
是一个显示一个小部件QTextDocument
其中可以包含QTextBlock
s and QTextFrame
s。框架和块是文本容器,为文档中的文本提供结构,但它们不由单独的小部件呈现。因此,它们不能独立设计。我建议使用QTextEdit
或每条消息的其他小部件,并正确管理随之而来的内存使用增加。
我将介绍如何设置文本编辑的样式。
首先,拍摄所需边框的清晰图像。我用一点 Photoshop 准备了自己的图像(不像生产应用程序那样干净):
让我们为类的对象设置样式QTextEdit
及其子类。
QTextEdit {
background-color: #eaedf2; /* Same gray in your background center */
border-image: url(":/images/bkg.png"); /* The border image */
border-top-width: 11px;
border-right-width: 4px;
border-bottom-width: 4px;
border-left-width: 11px;
}
将之前的样式表设置为文本编辑的容器会将所有样式表变成这样
与您想要的外观非常相似。当然,你必须准备一个好的边框图像并更好地调整边框尺寸,但我认为这可能会有所帮助。
如果您希望传入和传出消息有不同的样式,那么您必须
在样式表中正确区分并选择它们。查看this http://qt-project.org/doc/qt-5/stylesheet-syntax.html以供参考。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)