qt5.7下QTextEdit 无法设置背景色透明的问题

myth_avalon 2016-09-01 10:10:34
之前发了一个帖子:http://bbs.csdn.net/topics/392004604,当时以为解决了QTextEdit 背景透明的问题。但是最近发现,使用QGraphicsOpacityEffect后,连QTextEdit 里面的字都透明了,透明度0.5以下根本看不清字,求大家帮忙解决一下啊,困扰我好几天了,能试的方法都试过了。

目前为止,发现最有可能的是QTextEdit 的viewport()导致了QTextEdit 背景无法透明的问题,但是viewport()使用qpalette设置不起作用,而使用QTextEdit ->viewport()->setAttribute(Qt::WA_TranslucentBackground, true);则会导致完全透明,连父窗口都穿过了。下面上图,父窗口就是一个QWidget给了一个半透色。


这张是使用QGraphicsOpacityEffect设置的效果,字快看不清了


这是setAttribute(Qt::WA_TranslucentBackground, true)的效果,完全透明了
...全文
1067 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
myth_avalon 2016-09-01
  • 打赏
  • 举报
回复
发现问题在哪了,是由于主窗体设置了setAttribute(Qt::WA_TranslucentBackground),所以导致QTextEdit不能透明,如果不设置setAttribute(Qt::WA_TranslucentBackground),通过调色板和qss都可以实现透明,但是我必须要是主窗体透明啊,现在该怎么解决这个问题呢,有没有什么其他办法可以使主窗体透明呢?
  • 打赏
  • 举报
回复
引用 3 楼 myth_avalon 的回复:
[quote=引用 2 楼 what951006 的回复:] 换个Qt5.6吧! 完美解决
qt5.6下可以么?这是qt5.7的bug?[/quote] 不清楚 5.6可以setStyleSheet来控制透明度
myth_avalon 2016-09-01
  • 打赏
  • 举报
回复
引用 2 楼 what951006 的回复:
换个Qt5.6吧! 完美解决
qt5.6下可以么?这是qt5.7的bug?
  • 打赏
  • 举报
回复
换个Qt5.6吧! 完美解决
myth_avalon 2016-09-01
  • 打赏
  • 举报
回复
自己顶一个吧
myth_avalon 2016-09-01
  • 打赏
  • 举报
回复 1
真是曲折的过程,无意中发现了这个问题的解决方法。当主窗体设置setAttribute(Qt::WA_TranslucentBackground)后,即背景透明后,如果还想让输入控件(QTextEdit,QLineEdit,QPlainText)背景透明的话,其实只要将该控件设置为无边框就可以了了:setFrameStyle(QFrame::NoFrame); 接分吧!
myth_avalon 2016-09-01
  • 打赏
  • 举报
回复
问题找到了,但是没有解决办法,设置主窗体的的背景透明好像必须要使用setAttribute(Qt::WA_TranslucentBackground),这样在paintevent中绘制透明背景色或者使用调色板绘制透明的背景色才能起作用,不然设置的任何透明色都在底层都有一层黑色的背景。 我这个程序中不一定需要透明的背景,但是QTextEdit一定要透明背景,因此就只能暂时先不管了。 总结一下吧。 1:如果想要QTextEdit,QTextEdit这些输入控件能够设置透明背景,则主窗口(最靠近桌面的那层窗口)不能使用setAttribute(Qt::WA_TranslucentBackground)设置透明背景。 2:貌似和viewport()没有太大的关系。 暂时先这样吧,希望有大神能够把两者冲突的问题解决了。

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧