paip.提升用户体验---控件透明的设置
paip.提升用户体验---控件透明的设置
作者Attilax , EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
1.透明图片背景 法
//////////////
控件背景设为带透明通道的图片(用Photoshop可以生成),一般以PNP格式为好
这个ok
2.setAttribute(Qt::WA_TranslucentBackground, true);
//////////////////////////////////////////////////////////////
ui->label_4->
有效
3.透明背景颜色方法
///////////////////////////
background-color: rgba(0,0,0,30);
有时要跟个透明图片背景 法一起使用才.生效
4.控件的背景动态座标法
/////////////////////////
3没这个功能。。。只能把控件的背景根
据插件的坐标,设置得和窗口的背景一样
就是如果控件在x1,y1这个点上,则在控件设置背景的时候,把使用到的那张背景图在控件的现实位置也设置为x1,y1的坐标
所谓控件透明,是指控件的背景与窗口的大背景是一样的。
如果控件不移动,则可以取窗口相应位置的背景图来做控件的背景,用 setBackgroudPixmap
如果控件可移动,那就要在移动的时候再重新取窗口相应位置的背景来重新设置控件背景。
原理如此,可以自己实现的
5. QPalette pal = palette();
.//////////////////////////////
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
// ui->label_4-> setPalette(pal);
QPixmap pixmapw("c:/img/dot.png");
// ui->label_4->setMask(pixmapw.mask());
6. 重绘方法:
/////////////////////
重载paintEvent
假设透明控件为TransLabel:
重载paintEvent
在TransLabel类中
void TransLabel::paintEvent(QPaintEvent *paintEvent)
{
QPainter paint;
paint.begin(this );
paint.drawPixmap(rect(),GroundPixmap);
paint.setPen(TextColor); //控件上字体显示的颜色
paint.drawText(xOrigin, yOrigin,QString::fromUtf8(labelText)); // label为所要显示的文字
paint.end();
}
参考
qt实现透明控件 - 梁锦明的专栏 - 博客频道 - CSDN.NET.htm