• 6755阅读
  • 4回复

关于窗口半透明、窗口叠加、弹出操作菜单的问题 [复制链接]

上一主题 下一主题
离线cuiwanfu
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-27
各位大侠:
       本人Qt菜鸟,初来乍到,望各位多多指教!
       我现在想要做一个界面,大致功能是这样的。首先在QMainWindow中显示动态的图片,然后菜单上面有按钮,当我点击按钮时会在MainWindow的左侧显示出一个半透明的操作菜单!
        这个功能在win7上我是这样实现的,当点击按钮时创建一个父窗口是MainWindow的父窗口的widget类,然后设置这个widget类的透明度,这样的话在win7上马马虎虎可以用,但是移到Xp时,就会发现这个弹出的窗口就会映射上一点MainWindow上面显示的图片,但是不会随着背景图片的变化而变化,请各位大神指点下,急求!!!!!!!!!!!


        下面是弹出widget的设置透明的代码

    setAttribute(Qt::WA_TranslucentBackground, true);
    setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
    setWindowOpacity(0.7);
离线彩阳

只看该作者 1楼 发表于: 2013-07-28
“个父窗口是MainWindow的父窗口的widget类,然后设置这”

应该是“子窗口”吧?怎么觉得这句话不对。
你出现的这种情况应该是widget没有update()里面的内容,自己手动调用update()槽看看。
上海Qt开发联盟,热忱地欢迎你的加入!
离线cuiwanfu

只看该作者 2楼 发表于: 2013-07-29
                _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的背景色就会变为全黑,并且不透明!

我就是想实现在一个大的窗口上显示一个操作菜单,这个操作菜单是透明的,以不至于挡住大窗口中的显示内容!如果我的上面的做法是不正确的,请各位给指条路,谢谢大家了!
离线neil-wen

只看该作者 3楼 发表于: 2013-08-08
顶一下
离线hayixia512
只看该作者 4楼 发表于: 2013-08-15
顶一个   看看帅气的头像
快速回复
限100 字节
 
上一个 下一个