我正在使用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
仍然没有用......
...
确定是否有另一种获取鼠标事件的方法?例如,用户可以按下并拖动然后释放,我得到坐标,这样我就可以拍照和类似的东西,用户需要看到背景,这就是为什么我说它需要透明。
答案 0 :(得分:1)
如果你使用的是Qt 5.2,你可能想看看这个Qt Windows Extras: