qt中ui设计师界面stylesheet中设置了背景图片但是运行不显示

qt中ui设计师界面stylesheet中设置了背景图片但是运行不显示

1.问题1

通过主窗口Widget的stylesheet设置主窗口背景图片

QWidget#Widget{
	border-image: url(:/images/2.png);
	color: rgba(255, 255, 255, 255);
}

设置完之后在ui设计界面是能够看见背景图片设置成功的,通过快捷键alt+shift+r显示预览界面也是没有任何问题的,但是运行时却不显示背景图片

2.问题2

通过查阅:

参考QWidget样式表或背景图片在Qt Designer 中能显示但运行时不显示的解决方法_为什么qt的图片运行不显示-CSDN博客

Qt利用setstylesheet给控件设置背景图片不能显示_qt使用setstylesheet 无法加载背景图片-CSDN博客

1.QWidget中使用stylesheet这种方法是行不通的,设置背景图片背景图片其实并没有发生真实改变,但是它的子窗体背景图片是会发生改变的。

2.解决方法一:即在QtDesigner中添加一个Frame窗口,后续所有的控件都放在这个新的Frame窗口,我们只需对这个新添加的Frame窗口来进行styleSheet设置即可

我试了一下添加新的frame的解决方法,但是对于我来说并没有效果,背景还是不显示。

3.重写虚函数paintEvent函数

void Widget::paintEvent(QPaintEvent* event)
{
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

对我来说是有效果的,但是有一个很严重的问题,第一次生效了,确实显示背景图片了,但是后续我修改背景图片为其他的背景图时,运行时的背景不是我新设置的背景图,而还是第一次的背景图。

3.解决

通过代码设置窗口的palette属性来实现

void Widget::setBackground()
{
    QPixmap pixmap=QPixmap(":/images/2.png").scaled(this->size());
    QPalette palette;
    //设置主窗口背景图片
    palette.setBrush(QPalette::Window,QBrush(pixmap));
    this->setPalette(palette);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值