达到的效果:上层实现qt绘制画面,下层实时播放视频
关键:两层控件
实现方法:继承qwidget自定义控件,创建后使用show函数显示,构造函数无需传参,跟子窗口一样;
重点:透明;关键函数:SetWidoWflags()、setAttribute
方法:①,实现无边框:
设置无边界窗口并置顶
setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint | Qt::Tool);
setWindowFlags(Qt::FramelessWindowHint | Qt::SubWindow | Qt::WindowStaysOnTopHint );// 设置无边框、子窗口
②,设置窗口透明:this->setWindowOpacity(0.1);//设置透明0-全体透明
③,设置窗口模态:setWindowModality(Qt::NonModal);、//非模态
还有一些函数也可以实现窗口透明,本方法没用到;
setWindowFlags(Qt::FramelessWindowHint);
//setAttribute(Qt::WA_NoSystemBackground);//表明指定的widget没有背景。
//setAttribute(Qt::WA_TranslucentBackground);//表明widget应该具有半透明的背景,即任何不透明的区域都将是半透明的。
setAttribute(Qt::WA_TransparentForMouseEvents);//将禁止想widget和它的子widget传递鼠标事件。
这个函数也十分有用;
实现窗口透明后便可以重写painterevent函数实现透明绘制了,担心线条不清楚的话可以在绘绘画板上绘制,将绘画板设为透明,不影响绘制形状的显示;
好记性不如烂笔头,记下来总会有用