我使用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改变了。
1 个解决方案
#1
随便说一下,setWindowOpacity,无效。
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);
也是效果相同,固定的半透明图片。
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);
也是效果相同,固定的半透明图片。
#1
随便说一下,setWindowOpacity,无效。
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);
也是效果相同,固定的半透明图片。
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);
也是效果相同,固定的半透明图片。