qt 使用 setSoftKeyRole后透明对话框不能动态显示主背景

rsp19801226 2010-12-01 09:39:31
高手救命!
我使用camerawrapper,并处于viewfinder状态,就是camera没有capture的状态,可以动态显示图片,现在是希望弹出的对话框是半透明的状态,而且主背景也就是camera的图片是一直处于动态的,但是现在出现了一些问题:
根据网上可知,透明方法:
继承QDialog的一个对话框的构造函数中setAttribute(Qt::WA_TranslucentBackground, true);
paintEvent里面
QPainter p(this);
p.fillRect( 10, 10, 300, 300, QColor(220,220,220,50));
resize函数到QApplication::desktop()->availableGeometry(0)的宽度和高度
结果: 在客户区可以透明显示,但是cba仍然显示的是主背景的exit。

为了增加cba,我加上了setSoftKeyRole,这个按钮是处于cba的位置。
增加一个QAction,然后把它加入QDialog,再调用QAction的成员函数setSoftKeyRole(QAction::PositiveSoftKey),
再connect dialog的槽accept函数,这个时候完全没有背景,弹出来的框确实有了ok按钮,窗体是与按钮一样的颜色。
我在paintEvent里面,改成
QPainter p(this);
p.setCompositionMode( QPainter::CompositionMode_Clear );
p.fillRect( 10, 10, 300, 300, Qt::SolidPattern );
这个时候确实能显示透明的效果了,但是却是静态的对话框弹出的图片,移动手机,也不能随camera改变了。
...全文
221 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
rsp19801226 2010-12-01
  • 打赏
  • 举报
回复
随便说一下,setWindowOpacity,无效。
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);
也是效果相同,固定的半透明图片。

16,235

社区成员

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

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