怎样实现QT3控件的背景为透明?
来源:互联网 发布:windows 没有ssh目录 编辑:程序博客网 时间:2024/04/28 01:46
首先声明:下面的内容并没有最终解决背景透明的问题,只是把我尝试的过程写下来。所以想找到答案的人就不要往下看了。
我的环境是qt3.3.8+fedora8。
在做一个程序里面用到QIconView,想让它的背景色跟主窗口的背景图片(不是纯色的)一致,但是发现当拖动滚动条之后,发现背景图片并没有刷新,刷新了闪烁有很严重,所以想把它做成背景透明的,但是我试过很久,很多种办法都没能成功,现在能想起来的有以下几种:
(1)可以给widget设成其parent一样的背景图片,并且是widget所在位置的部分图片,这样在widget不会移动的情况下是透视的效果。但是貌似QIconView不支持,我的工程里用到这个控件。
setBackgroundOrigin(ParentOrigin);
除ParentOrigin外还有:WidgetOrigin (the default), ParentOrigin, WindowOrigin or AncestorOrigin
(2)试过stylesheet,可是这好像是qt4才开始用的,我用的是qt3.3.8
setStyleSheet("background-color: rgba(255, 255, 0, 50%)");
(3)试过QWidget::setWindowQpecity(double)是设置控件透明度的。但是参考手册上好像说这个只支持Mac和windows系统:This feature is only present on Mac OS X and Windows 2000 and up。我用的是fedora8,而且在程序里试过,确实不好使
(4)试过给背景图设成一个纯透明的png图片(记得在哪里这样做过),可是底色变成白色,仍然不是透明的;
(5)在参考手册里查到enum BGMode { TransparentMode, OpaqueMode },但是不知道怎么使用
(6)在网上也查到这样的用法,但是经过测试,貌似仍然是qt4的用法,qt3不支持:
QPalette pal = this->palette();
pal.setBrush(QPalette::Base, Qt::transparent);
this->setPalette(pal);
换成qt3支持的语法,效果跟(4)一样:
QPalette pal = wordLabel->palette();
const QBrush *br = new QBrush(color0, QPixmap("images/transground.png"));
pal.setBrush(QColorGroup::Background , *br);
wordLabel->setPalette(pal);
现在的问题是:
(1)qt3支持透明背景吗,指linux系统下?
(2)如果支持如何实现?
(3)我似乎在哪里看过在paintEvent里自己一帧一帧地画背景,但是想不起来在哪看到的了。这样是否能实现透明背景?如何实现?
(4)我尝试过把QIconViewItem的icon属性设成一个透明的png图片,这样的效果就是透明的,为什么呢?能否借鉴呢?
(5)QIconView为什么不支持setBackgroundOrigin(ParentOrigin);呢?
后续:
在网上得到一个回答如下:
需要重载label的paint方法,设置label的mask等等,甚至可能需要grab被遮挡的widget的图像,效率非常低,并且被遮挡的widget一定不能是动态改变的图形输出,要不在我的双核pc上跑都感觉的到卡,这点我记得相当清楚。
所以建议换到qt4,默认就是透明的。
按照上面说的,要重载paint方法,估计透明效果做出来页面也会非常闪烁。因为不能换开发环境,所以考虑放弃透明背景,换成给空间背景上颜色吧。
- 怎样实现QT3控件的背景为透明?
- 实现控件的透明背景
- 如何设置控件的背景为透明的
- 在按钮控件上加载背景为透明的图标
- 怎样使控件的背景色为透明色?
- 标签控件的背景透明
- 关于控件的背景透明
- c#设置自定义控件为透明背景
- 实现控件透明背景的几种方案
- 实现对话框在位图作为背景时的控件透明
- VB.NET 实现自定义控件的透明背景
- 实现对话框在位图作为背景时的控件透明
- C#实现透明背景的垂直Label控件
- 实现控件背景透明的几种方法
- MFC以拼接的方式设置程序的背景,控件背景设置为透明。
- 怎样使当前界面的背景透明
- MFC中实现Static控件背景透明
- java swing中常用的控件设置为背景透明的栗子
- java图片验证码
- Aix 常用指令
- 中国没有Google,国民将会怎样?
- 争当掏粪工的姑娘
- PCI规范学习笔记(2)
- 怎样实现QT3控件的背景为透明?
- DDE中LinkTopic的设置
- 文件查找(CFileFind)
- 收集到的java 正则验证 源码
- 男人的责任 【转】
- FTPClient中 retrieveFileStream 的用法
- 快速种植系统叠进程序
- 男的那点事
- 十年所取得的丰富经验和教训(觉得挺好就转过来)