QT:给Widget设置背景图片

/*
* set background image
*/
QPixmap bgImages(":/images/bg.png");
QPalette bgPalette = this->palette();
bgPalette.setBrush(QPalette::Background,bgImages);
this->setPalette(bgPalette);

setMask(bgImages.mask());// set background mask attribute same as background's image

先上代码,这里作说明。

1)将该段代码放在需要设置背景图片的构造函数中
2)需要包含头文件
#include <QPixmap>
#include <QPalette>
#include <QBitmap>
3)逻辑:
首先构造一个QPixmap对象,可以认为是一个位图。
然后将该Widget的调色板palette取出来放在bgPalette里面
修改调色板,用Brush将我们刚才创建的图片刷到调色板上去
最后重置Widget的调色板

4)注意:
如果背景图片是png等含有透明部分的图片,还要用setMask()函数将背景的掩码设置成和图片一样的,方可显示透明色。

5)当把上面的widget作为其他widget的子widget时,可能背景布显示。这是增加

setAutoFillBackground(true);// 自动刷新背景 

 

posted @ 2012-03-12 16:01  G背包  阅读(3029)  评论(1编辑  收藏  举报