当前位置:网站首页>QT笔记——在一个窗口上显示另外一个透明窗口

QT笔记——在一个窗口上显示另外一个透明窗口

2022-08-02 10:59:00 旧街凉风°

在一个父窗口上 的某个位置,显示 一个透明窗口 (窗口透明,但是控件不透明)

一开始试了很多种的透明方式 ,有些可以,有些不可以,会有黑边背景。
透明的 几种方式
在子窗口 的 构造函数中写上

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));  
}

参考博客:
在另外一个窗口上 显示 子窗口

原网站

版权声明
本文为[旧街凉风°]所创,转载请带上原文链接,感谢
https://blog.csdn.net/lion_cxq/article/details/126089971