在一个父窗口上 的某个位置,显示 一个透明窗口 (窗口透明,但是控件不透明)
一开始试了很多种的透明方式 ,有些可以,有些不可以,会有黑边背景。
透明的 几种方式
在子窗口 的 构造函数中写上
SubWidget.cpp
//设置窗口透明
setAttribute(Qt::WA_TranslucentBackground);
//设置无边窗体 并且为 tool的模式
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
在父窗口的 构造函数中写上 显示
MainWidget.cpp
new出 子窗口 然后展示出来 ,移动到父窗口的某个位置(位置根据自己需要定)
SubWidget * widget = new SubWidget (this);
widget->move(300,400);
widget->show();
这样虽然可以实现 让子窗口透明 ,而且位置显示正确,但是我们发现还是有问题的,
因为当我们移动父窗口的 时候,子窗口没有移动,这时候,我们就需要实时改变位置(根据父窗口的位置)
我们可以在paintEvent事件中 获取窗口的位置 ,然后 发送位置 ,让子窗口不断的刷新移动
void myLabel::paintEvent(QPaintEvent* event)
{
Q_UNSED(event);
update();
widget->move(this->mapToGlobal(QPoint(this->x()+ 300,this->y() + 400));
}
参考博客:
在另外一个窗口上 显示 子窗口