qt 设置背景图片方法

遇到的问题

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)}");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值