本人完全的小白,就背景图片这个问题折腾了好长时间,最后才弄清,及时记录下来免得自己又忘了。
1.setStyleSheet
setStyleSheet("background-colour:white;background-image:url(:img/pix.png);background-position:center;background-repeat:no-repeat");
这种方法可设置背景图片显示位置,repeat可设置是否重复填充背景图片。但只能用于子控件设置背景图片,如果对Widget使用,状态栏、工具栏以及主空间等都会被设置成同样的背景图片。
可通过建立一个QFrame来对其进行背景图片设置来避免此问题:
QFrame * frame = new QFrame(this);
frame->resize(this->size());
frame->setStyleSheet("background-colour:white;background-image:url(:img/pix.png);background-position:center;background-repeat:no-repeat");
使用setStyleSheet时,就意味着不能对背景图片进行修改,自然也就不能进行拉伸操作。
2.Palette
QPalette palette;
palette.setBrush(QPalette::Background,QBrush(QPixmap(":\img\\pix.png")));
this->setPalette(palette);
可用于向整个Widget添加背景图片,且拉伸窗口会自动填充背景图片,无法设置不自动填充。
可进行以下操作使pix的大小根据Widget大小拉伸:
palette.setBrush(QPalette::Background,QBrush(QPixmap(":\img\\pix.png").scaled(this->size())));
但这里的拉伸仅限于第一次窗口出现时。
3.使用label标签
this->resize(300,300);
QLabel * bkg = new QLabel(this);
bkg->setPixmap(QPixmap(":/img//pix.png"));
bkg->resize(this->size());
这种方法不会自动重复填充背景图片,同时也能通过类似方法二的途径来使得背景图片适应窗口大小。