遇到的问题
widget窗口直接使用 setStyleSheet设置 border-image 显示不出来,
如果非要使用setStyleSheet 方法,
可以在widget里面再加一层 widget2,然后其他的控件都放在新添加的widget2上面。
然后通过setStyleSheet 的方法,给widget2 设置border-image 。
使用setStyleSheet border-image 显示不出来的原因是
setStyleSheet
1:setStyleSheet()
有一个很值得注意的地方,
1.该函数只能用于设置有父窗口的子窗口的背景!
如果一个窗口没有子窗口,则无法使用该函数来设置背景颜色或图片!!
2:同时:对于一个父窗口而言:如果我们用setStyleShette设置了其样式,而对于其子窗口:
如果没有用同样的函数来设置的话, 则其子窗口的样式和其父窗口完全一致,亦即:其集成了自己父窗口的样式!
3:延伸:对顶层窗口(没有父窗口),其有若干个子窗口,
则当我们用setStyleSheet来设置这个顶层窗口的样式后,
依据1可知:该父窗口本身没有任何变化,亦即设置没有生效;
而其子窗口:只要子窗口本身没有用setStyleSheet来设置自己的样式表,
则其就是用的自己父窗口的样式表!!
方法1(这个方法最好)
void MainWidget::paintEvent(QPaintEvent *e)
{
QPixmap pixmap = QPixmap(":/image/res/titile.jpg").scaled(this->size());
QPainter painter(this);
painter.drawPixmap(this->rect(), pixmap);
//painter.drawPixmap(0,0,this->width(),this->height(),QPixmap(":/image/res/titile.jpg"));
}
方法2:
QPixmap pixmap = QPixmap(":/image/res/titile.jpg").scaled(this->size());
QPalette palette(this->palette());
palette.setBrush(QPalette::Background, QBrush(pixmap));
this->setPalette(palette);
方法3:
this->setStyleSheet("background:red");
this->setStyleSheet("border-image:url(:/image/res/titile.jpg)");
setStyleSheet限定窗口
this->setStyleSheet("#MainWidget{border-image:url(:/image/res/titile.jpg)}");