Qwidget 无法加载背景图片,或设计师显示背景图片,运行时不显示

本文详细介绍了在Qt中设置窗口背景的两种方法:一是利用stylesheet属性,特别关注在不同窗体如mainwindow、dialog和widget中设置背景图片的注意事项;二是通过代码直接设置背景。文章还提供了解决子窗体背景继承问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://blog.youkuaiyun.com/luokehua789789/article/details/55511676

一、设置方法有两种,如下:

1、利用style sheet给窗体设置背景
使用stylesheet设置背景图片还是有一些要注意的,如果是在mainwindow和dialog中,直接右键change style sheet在add resource中选择background-image或者border-image,选择资源文件中的图片就行了(前者是按像素显示图片,后者可根据窗体大小来自动缩放图片,通常使用后者,前者如果界面与图片大小不一样,则背景的显示可能就不是整张图片了),如下图:

注意:

a、但在widget中就不行,你会发现,用同样的方法,背景并没有发生改变,而仅仅是它的子窗体背景图片发生了改变。

 那么在widget中要如何做呢,我们在widget中放置一个frame,然后对frame通过stylesheet设置背景,后面窗体里所有的部件都放在这个frame里。



b、 我们知道,子窗体会继承父窗体的属性,也就是说,父窗体的背景,在子窗体中也会有,那如何让子窗体不继承父窗体的背景呢,同样的,还是在Edit Style Sheet里,需要输入如下代码:(这样就可以解决窗体中的按键、QLable等控件与主窗体的一样。)

#desktop {
border-image: url(:/images/desktop.jpg);
}
#desktop * {
border-image:url();
}

desktop是你的窗体名。
例如 QWidget widGet;则样式表需要写成
#widGet {
border-image: url(:/images/desktop.jpg);
}
#widGet * {
border-image:url();
}
针对QWidget设计师含有背景图片,而运行时没有,则需要用以下方法

2、不过也可以通过如下代码来实现:

  QWidget *widget = new QWidget();
 widget->setAutoFillBackground(true);
 QPalette palette;
 QPixmap pixmap(":/Resources/Penguins.jpg");
 palette.setBrush(QPalette::Window, QBrush(pixmap));
 widget->setPalette(palette);
 widget->show();
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫回首�

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值