找回密码
 立即注册
收起左侧

QT5 在已经完成的软件界面外再加一层半透明的黑色前景

12
回复
11665
查看
[复制链接]
累计签到:15 天
连续签到:1 天
来源: 2015-8-19 09:39:10 显示全部楼层 |阅读模式
3Qter豆
如题,让软件改变整体色调,确不改变功能;要求:
原软件包含widget、pixmap、button、
SmartWebView等组件,加入黑色透明前景后不影响鼠标点击按钮和事件的正常调用。
请大致说明思路,最好给出mainwindow的功能代码。

最佳答案

查看完整内容

天哪,灵光一闪我知道怎么做了,其实这个问题很简单,有时候我们需要把自己倒过来思考问题,兴奋。。。先卖个关子,待我发帖去。。。
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-8-19 09:39:11 显示全部楼层
天哪,灵光一闪我知道怎么做了,其实这个问题很简单,有时候我们需要把自己倒过来思考问题,兴奋。。。先卖个关子,待我发帖去。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2015-8-21 16:15:29 显示全部楼层
怎么没人回复。。。。。。。。做QT的人这么少吗?
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-22 11:39:33 显示全部楼层
你说那个样子不会,但是你这样不行吗?先把窗口改变颜色,然后再设置成透明的,效果应该跟你要的差不多吧
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-8-24 08:55:23 显示全部楼层
QSS一般的配色方案都能搞定,尝试一下。
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-8-25 09:20:30 显示全部楼层
你可以在mainwindow里重写paintEvent(),然后画一个rect或者你想要的其他类型,具体方法可以参见这篇帖子,下载源文件,找到比如说dropshadowwidget,你看他的写法就明白了。。。
回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2015-8-25 14:38:48 显示全部楼层
一叶知秋 发表于 2015-8-25 09:20
你可以在mainwindow里重写paintEvent(),然后画一个rect或者你想要的其他类型,具体方法可以参见这篇帖子, ...

亲,你说的是哪篇帖子?画一个rect的话,默认应该是在最底层吧,这样上面的组件就会把rect挡住啊
回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2015-8-25 15:12:59 显示全部楼层
qq1043068972 发表于 2015-8-22 11:39
你说那个样子不会,但是你这样不行吗?先把窗口改变颜色,然后再设置成透明的,效果应该跟你要的差不多吧 ...

把窗口改变颜色指的是背景色吗?设置透明是设置哪个窗口透明????
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-25 17:51:29 显示全部楼层
bykege 发表于 2015-8-25 15:12
把窗口改变颜色指的是背景色吗?设置透明是设置哪个窗口透明????

是背景色!  设置透明的窗口是"已经完成的QT软件的窗口"
回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2015-8-31 09:28:01 显示全部楼层
一叶知秋 发表于 2015-8-26 09:57
天哪,灵光一闪我知道怎么做了,其实这个问题很简单,有时候我们需要把自己倒过来思考问题,兴奋。。。先卖 ...

就是这种效果~求帖子链接
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-9-2 18:15:19 显示全部楼层
bykege 发表于 2015-8-31 09:28
就是这种效果~求帖子链接

啊。。。因为之前写了个小demo,但是这几天比较忙,没去完善,所以帖子也没写!我说一下思路吧,就是改变你的主窗口的透明度,在主窗口的后面再加一个窗口做背景,这样就形成了通过一个具有一定透明的窗口看它后面的背景窗口,其实在二维空间里,这两者叠加的效果就好像加了一个遮罩似得!!!可能说得不是太明白,附件里有个小demo,看一下就明白了。如果要想使用的话,还需要处理很多细节,这还只是一个思路。。。欢迎讨论完善!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2015-9-6 10:34:15 显示全部楼层
一叶知秋 发表于 2015-9-2 18:15
啊。。。因为之前写了个小demo,但是这几天比较忙,没去完善,所以帖子也没写!我说一下思路吧,就是改变 ...

这样做是个很好的解决办法,但是增加了后面的窗口,就会扩大整个软件的长和宽,有没有办法避免这个问题?
回复

使用道具 举报

累计签到:15 天
连续签到:1 天
2015-9-9 14:37:20 显示全部楼层
解决方法:在后面做一个MainWindow,称为OutW,设置背景色为黑,原MainWindow中加入以下代码即可:
QGraphicsOpacityEffect *opacityEffect;//透明度效果
opacityEffect->setOpacity(0.7);
setGraphicsEffect(opacityEffect);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了