会话好友区设计与开发(三)
会话好友区设计与开发(三)
前言
在上一集,我们完成了两个方法,一个是添加item,一个是清空item。最后我们又用宏开关测试了我们的代码,可以看到我们的代码大致没有任何的毛病。但是我们发现每一个item的头像的背景色貌似不太对劲。那么我们这一集将来解决这一个奇奇怪怪的问题。
分析
那么我们再来看一眼他存在了什么问题,头像的背后一整块的背景色与右边两个组件的背景色不同。我们通过取色器可以发现,头像的背景色是247,247,247。
但是我们在设计整个item的时候,背景颜色是231,231,231。
我们就知道,绝对是左边的问题。
我们知道Qt的内置控件本质上都是画出来的,我们就需要通过更底层的方式进行绘制。
Qt 实现 QSS 的时候,本质上都是通过"画笔"QPainter 这一系列操作,画上去的~~对于 Qt 自带的类,自身已经在 paintEvent 中处理好了相关的逻辑了
对于自己定义的类,就需要手动的来完成上述的"绘制"过程。
Qt 中,如果是给 QWidget 的子类, 通过 QSS 设置背景色则默认情况下是不生效的!
要想生效,需要按照官方文档,写上一段特殊的代码,才能生效!
添加官方代码
void SessionFriendItem::paintEvent(QPaintEvent *event)
{(void) event;QStyleOption opt;opt.initFrom(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
之后再来运行!
可以看到这个问题已经解决了。那么今天就先讲这一点,期待下一集哦!