_pOperatorWidget = new COperatorWidget(_pParentWidget);
_pOperatorWidget->show();
_pOperatorWidget->raise();
这是我在MainWindow中的窗口中创建子窗口的语句,其中_pParentWidget是我获取到的MainWindow的父窗口,透明的语句是在COperatorWidget类的构造函数中实现的!
QPalette pal;
pal.setColor(QPalette::Background, QColor(125, 125, 125, 255));
pal.setColor(QPalette::Foreground, QColor(255, 0, 0, 255));
setPalette(pal);
setAutoFillBackground(true);
//设置窗口的透明度
setAttribute(Qt::WA_TranslucentBackground, true);
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
setWindowOpacity(0.7);
如果使用这样的语句的话在Win7中是可以实现的,但是在Xp系统下,就会出现闪烁,同时_pOperatorWidget 的半透明的背景色就会映射一块MainWindow的背景色,然后这块的颜色就不在随着MainWidow的变化而变化!
_pOperatorWidget = new COperatorWidget(this);
如果使用这个语句的话,_pOperatorWidget的背景色就会变为全黑,并且不透明!
我就是想实现在一个大的窗口上显示一个操作菜单,这个操作菜单是透明的,以不至于挡住大窗口中的显示内容!如果我的上面的做法是不正确的,请各位给指条路,谢谢大家了!