关于QWidget作为子窗口透明问题
1、重载paintevent实现
QStyleOption opt;opt.init(this);QPainter p(this);p.setCompositionMode(QPainter::CompositionMode_Clear); //设置为完全透明style()->drawPrimitive(QStyle::PE_Widget,&opt,&p,this);
这种方法在widget有父类的情况下,重载paintevent后通过setStyleSheet设置widget的背景为transparent后可以将widget设置为透明
例如:
setStyleSheet("#widget{background:transparent;}");
但是在使用有时我们需要将widget的parent设置为NULL,即QWidget *widget = new QWidget;
在这种情况会发现设置的透明是无效的,这时可以考虑使用第二方法
QPainter p(this);
p.fillRect(this->rect(),QColor(0,0,0,165));
绘制一个透明或者半透明的rect,165为透明度。这样也可以实现widget透明的效果
2、模仿QMainWindow
这种方法就是在widget的基础上再添加一个subWidget,然后以subWidget为背景设置透明
setStyleSheet("#subWidget{background:transparent;}");
这样操作的好处在与当我们项目中有多个widget都需要使用transparent这个属性时,不需要给每一个widget都重载一次paintevent,减少因绘制图层产生的错误
同时以上两种方法使用时需要设置 widget属性
this->setAttribute(Qt::WA_TranslucentBackground);
关于QWidget作为子窗口透明问题相关推荐
- VC实现顶层窗口的透明与实现子窗口的透明【重点:子窗口透明处理】
本人在vc开发过程中,多次因窗口透明而煞费苦心,在本人的前一文章<UpdateLayeredWindow与SetLayeredWindowAttributes>中已经指明实现窗口的透明方法 ...
- mfc 子窗口 跟随 主窗口
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://shujiantang.blogbus.com/logs/29644154.html 前不久做了一个MFC项目.项目做完 ...
- QWidget子窗口适应父窗口大小
问题:QWidget的两个窗口使用了布局之后,各自窗口的控件可以适应大小变化,但是两个窗口合并后,父窗口变化而子窗口不会变 窗口1:Widget1,窗口2:Widget2,二者都进行了界面布局 窗口1 ...
- Qt渲染视频常见问题(视频渲染窗口上子窗口设置透明出现阴影问题、主窗口缩放导致视频渲染窗口部分出现视频闪烁问题)
开发环境 Qt5.9.6+VS2015 1.视频渲染窗口上子窗口设置透明出现阴影问题 平时为了方便代码管理,一般窗口上设置窗口或者控件,都会设置Parent(setParent),这样对主窗口进行某种 ...
- 半透明: MFC实现父窗口不透明,子窗口半透明效果
[cpp] view plaincopy OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //绘制子窗口的背景,用主窗口的背景填充,实现透 ...
- MFC实现父窗口不透明,子窗口半透明效果
参考 https://blog.csdn.net/u011430225/article/details/48470373 描述: 根据MSDN所述,子窗口的半透属性是跟随父窗口的.也就是说在子窗口中用 ...
- Python Qt GUI设计:QMainWindow、QWidget和QDialog窗口类(基础篇—10)
目录 1. QMainWindow窗口 2.QWidget窗口 3.QDialog窗口 3.1.QMessageBox窗口 3.2.QInputDialog窗口 3.3.QFontDialog窗口 3 ...
- pyqt 子窗口控制主窗口绘图_实战PyQt5: 005-主窗口QMainWindow
QMainWindow简介 在桌面应用中,一个应用软件通常都会包含一个主窗口,主窗口是承载所有控件的窗体, 在PyQt5中常用的主窗体有两种QMainWindow和QDialog,他们也都继承自QWi ...
- linux qt应用程序全屏,QT中MDI应用程序中更改子窗口大小或是全屏显示子窗口的方法...
1.QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示. 但是他只对窗口模式的部件有用.子窗口的特征是 Qt::SubWindow,不是独立的窗口.因此对其 ...
最新文章
- Linux下清空用户登录记录和命令历史的方法
- Python你必须知道的十个库
- 域对抗自适应算法的设计、不足与改进(Domain Adversarial Learning)
- c++_导入/导出excel文件
- 使用idea的maven插件自动打jar包
- 【东软实训】SQL函数
- 开发测试矛盾java吧_不愿看到Java开发者再做的10件事
- MySql 初步整理
- find linux 目录深度_15种方法找出Linux系统中最大的N个文件,你懂几种?
- 设置HTML的一个元素
- ReentrantLock源码解读
- 如何使用fiddler抓取APP接口
- 科来网络分析系统(CSNAS)
- TCP/IP-----协议号、端口号、ARP、icmp
- 桌面文件丢失如何找回
- XML特殊符号-五个xml预定义实体
- Jenkins+Gitlab+Ansible自动化部署(六)
- python PIL 图像处理库简介(一)
- H264 概念之 I P B 帧
- nodejs调用SendCloud邮件API2.0
热门文章
- 浅谈《数学之美》①——自然语言处理
- matlab yticklable,Matlab绘制XTickLabel有效字符串(Matlab Plot XTickLabel valid strings)
- 大治河西枢纽二线船闸总体设计(水利设计资料)
- 免费的模拟贝斯合成器-Togu Audio Line TAL-Bassline Free WiN-MAC
- 任务7、统计一组学生成绩
- 2022-2028年全球及中国斯特林发动机行业投资前景分析
- C语言math.h详解
- 2021年危险化学品经营单位主要负责人考试及危险化学品经营单位主要负责人考试资料
- windows10 原版 纯净版 下载
- 一个科研工作者怎么算很努力