Qt child widget stop inherit parent widget image(Qt子窗体stylesheet不继承父窗体stylesheet)
2016-06-15 12:05
591 查看
设置一个QWidget(及其子类)的背景图片的两种方法
方法一:将图片用QPixmap存储,使用QPainter::drawPixmap()
void BackGroundPicture::paintEvent( QPaintEvent * ) { QPixmap bkgnd(":/form/Resources/1.png"); QPainter painter(this); painter.drawPixmap(this->rect(),bkgnd); }
方法二:使用setStyleSheet()
这里有一点要注意,你直接在一个QWidget上使用setStyleSheet()方法设置背景图片是没有效果的。其中一个解决办法是在paintEvent()下添加如下配置void BackGroundPicture::paintEvent( QPaintEvent * ) { QStyleOption o; o.initFrom(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget,&o,&p,this); }
或者在QWidget上放置一个QFrame,将原先在QWidget上的所有组件都放在QFrame上。
frame = new QFrame(this); frame->setStyleSheet("border-image: url(:/g/C:/Users/heqinghui/Desktop/history/background1.png)");
注意:使用setStyleSheet()方法时,子窗体对象会默认继承父窗体的背景图片,所以将setStyleSheet()改为如下方式(只让指定对象名设置该背景图片)
frame->setObjectName("FrameObjectName"); frame->setStyleSheet("#FrameObjectName { border-image: url(:/g/C:/Users/heqinghui/Desktop/history/background1.png); } ");
提示:QMainWindow已经处理过setStyleSheet()设置背景图片无效的情况,故无需再处理,但是要处理子窗体会继承父窗体背景图片的情况。
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- C#怎么给PDF添加背景图片
- js实现背景图片感应鼠标变化的方法
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- Android自定义Button并设置不同背景图片的方法
- android中实现背景图片颜色渐变方法
- javascript设置页面背景色及背景图片的方法
- QModelIndex/Role/Model介紹<二>
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- Qt Model/View/Delegate浅谈 - roleNames()
- QT历程(一):与CryptoJs对应的AES加密
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索