框架和透明窗口不起作用! Qt小部件

时间:2014-05-10 19:31:38

标签: c++ windows qt

我正在使用Qt小部件。

我需要一个对话框,显示当我点击主窗口上的按钮时,对话框应该是透明的,这意味着如果我打开它,我仍然可以看到背景,就像那里什么也没有。

我在对话框的构造函数中尝试了这个:

this->setWindowFlags(Qt::Widget | Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground,true);
this->setWindowState(Qt::WindowFullScreen);
  • 注意:我正在使用鼠标事件,我可以获得鼠标的坐标,我尝试了它并且它正在工作,我现在唯一想要的就是我说的透明部分。 程序编译得很好,图标显示在打开的程序所在的栏中,但如果我删除了上面的代码,我就无法使用我能看到的事件。

为了使这里的鼠标事件更加清晰:

void FramelessWindow::mousePressEvent(QMouseEvent *event){
    if(event->button()==Qt::LeftButton){
           origin= event->pos();
           rubberBand->setGeometry(QRect(origin,QSize()));
           rubberBand->show();
    }
}

void FramelessWindow::mouseMoveEvent(QMouseEvent *event){
    rubberBand->setGeometry(QRect(origin,event->pos()).normalized());
}


void FramelessWindow::mouseReleaseEvent(QMouseEvent *event){   
    rubberBand->hide();
}

*编辑:

花了近12个小时试图弄清楚如何解决这个问题,我只是不能:(我尝试了一切,但它不起作用,希望有另一种方法可以做同样的事情吗?我在Windows 8上..

*编辑2:

是的我正在使用Windows 8 ..

我对“用过的所有东西”的意思是我在google中做了一切,试过这个家伙的方法:

http://qt-project.org/forums/viewthread/42406/

和这家伙:

http://www.qtcentre.org/threads/53362-Qt5-Translucent-alpha-channel-problems

仍然没有用......

...

确定是否有另一种获取鼠标事件的方法?例如,用户可以按下并拖动然后释放,我得到坐标,这样我就可以拍照和类似的东西,用户需要看到背景,这就是为什么我说它需要透明。

1 个答案:

答案 0 :(得分:1)

如果你使用的是Qt 5.2,你可能想看看这个Qt Windows Extras:

http://qt-project.org/doc/qt-5/qtwinextras-overview.html