Qt窗口句柄传给别的程序之后,窗口上方的控件样式会失效。

雲天之巔 2017-07-26 05:44:57

如下图所示:
1,2,3,4都是QWidget类型的控件,将1的句柄传给了一个视频的sdk(这里是声网的SDK,用SDL也会有这样的情况),
在四个区域的上方放了一个带透明度的QPushbutton(样式使用qss设置的),
可以看出区域1上方的透明样式失效了,而且背景是黑的,而2,3,4区域的确实正常的,

这种情况已经弄了好久了,束手无策,之前的做法是将窗口和按钮的Parent都设置成null,然后叠加起来,现在永久了,这样不仅麻烦而且有别的问题,

求高手告知解决

...全文
680 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
雲天之巔 2017-08-05
  • 打赏
  • 举报
回复
感觉是无解了 , 最后想办法获取到了 图像的原始数据,改成自己用QPainter绘制了。 这样所有的问题就都解决了。。。
  • 打赏
  • 举报
回复
引用 2 楼 qqwangfan 的回复:
背景是黑的原因是窗口的宽高与视频帧的宽高不是相同比例,视频帧显示的时候没法填满窗口大小,如果要填满窗口大小,一种是让视频帧不按比例缩放,这样会造成图片拉伸的问题;另一种是按比例缩放,这样不会造成图像拉伸,但是窗口中显示部分就少一些。 “”可以看出区域1上方的透明样式失效了。“”这个没看明白你的意思。大窗口的中间是看到有一个QPushbutton。但是4个区域上方放了一个带透明度的QPushbutton,这个没看出来qpushbutton在哪,是指那4个数字?还是直接qpushbutton就将QWidget窗口覆盖掉了,现在看到的就是qpushbutton。
看明白了,是指大button在区域1上左上角显示为黑色?
  • 打赏
  • 举报
回复
背景是黑的原因是窗口的宽高与视频帧的宽高不是相同比例,视频帧显示的时候没法填满窗口大小,如果要填满窗口大小,一种是让视频帧不按比例缩放,这样会造成图片拉伸的问题;另一种是按比例缩放,这样不会造成图像拉伸,但是窗口中显示部分就少一些。 “”可以看出区域1上方的透明样式失效了。“”这个没看明白你的意思。大窗口的中间是看到有一个QPushbutton。但是4个区域上方放了一个带透明度的QPushbutton,这个没看出来qpushbutton在哪,是指那4个数字?还是直接qpushbutton就将QWidget窗口覆盖掉了,现在看到的就是qpushbutton。
hidxl 2017-07-28
  • 打赏
  • 举报
回复
有可能是视频的绘制过程没有理会样式表。或者视频绘制把样式表给更改了。
雲天之巔 2017-07-28
  • 打赏
  • 举报
回复
引用 3 楼 qqwangfan 的回复:
[quote=引用 2 楼 qqwangfan 的回复:] 背景是黑的原因是窗口的宽高与视频帧的宽高不是相同比例,视频帧显示的时候没法填满窗口大小,如果要填满窗口大小,一种是让视频帧不按比例缩放,这样会造成图片拉伸的问题;另一种是按比例缩放,这样不会造成图像拉伸,但是窗口中显示部分就少一些。 “”可以看出区域1上方的透明样式失效了。“”这个没看明白你的意思。大窗口的中间是看到有一个QPushbutton。但是4个区域上方放了一个带透明度的QPushbutton,这个没看出来qpushbutton在哪,是指那4个数字?还是直接qpushbutton就将QWidget窗口覆盖掉了,现在看到的就是qpushbutton。
看明白了,是指大button在区域1上左上角显示为黑色?[/quote] 是的 就是按钮在区域1的部分样式失效了, 样式我是在designer里面写的: QPushButton{ border-radius:30px; background-color:rgb(0, 0, 0, 150); color: rgb(255, 255, 255); font-size:16px; font-family:"微软雅黑" } QPushButton:hover{ background-color:rgb(200,80,6,180); border-radius:28px; } QPushButton:pressed{ background-color:rgb(200,80,6); } 这个用代码 setstylesheet是没差的, 感觉就是对于button来说 区域1的那个widget好像就是不存在似得,他直接显示了Mainwindows的背景色了 不知道你有没有用过SDL,Qt里面嵌入SDL窗口的话 也会有这个问题,,感觉好像无解了。
  • 打赏
  • 举报
回复
使用控件的setStyleSheet()函数可以改变得了按钮的样式。我试过在窗口控件上放置一个完全透明按钮,窗口播放视频,按钮还是完全透明的。

16,239

社区成员

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

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