QT 在视频上绘制

达到的效果:上层实现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函数实现透明绘制了,担心线条不清楚的话可以在绘绘画板上绘制,将绘画板设为透明,不影响绘制形状的显示;

好记性不如烂笔头,记下来总会有用

猜你喜欢

转载自blog.csdn.net/m0_55601371/article/details/122234730
今日推荐