Qt Qwdget 汽车仪表知识点拆解8 淡入效果

先贴上效果图,注意,没有写逻辑,都是乱动的

 

看下面的开始,开始的时候有一个带入的效果,这里有一个坑,

网上大部分都是调用下面这个函数

 

setWindowOpacity();

但是,你会发现,在你的子窗口中调用这个函数的时候,根本就没有什么调吊用

 

所以,这里需要使用一个新的东西

这么写

 

statebar_opacity = new QGraphicsOpacityEffect();
    ui->widget_statebar->setGraphicsEffect(statebar_opacity);
    statebar_opacity->setOpacity(0.0);


头文件自己补齐

 

 

statebar_opacity->setOpacity(num);


调用,直接改变

 

 

没有拉

 

Qt中实现视频的淡入淡出效果通常会涉及到使用`QVideoWidget`或者`QGraphicsVideoItem`来显示视频,并且使用`QPainter`类进行图形绘制。淡入淡出效果可以通过调整视频帧的不透明度(opacity)来实现。 以下是在`QGraphicsVideoItem`中实现淡入淡出效果的一个基本思路: 1. 创建一个`QGraphicsVideoItem`实例,并将其添加到场景中。 2. 捕获视频帧,并在每一帧上使用`QPainter`进行绘制。 3. 在绘制的过程中,改变视频帧的透明度来实现淡入或淡出效果。 4. 淡入可以通过在一定的时间范围内逐步增加透明度值来实现。 5. 淡出则是逐步减少透明度值的过程。 具体实现步骤如下: - 首先,你需要一个`QTimer`来控制淡入淡出的时间间隔。 - 在定时器触发时,逐步改变一个透明度值。 - 使用`QPainter`在`paint`事件中绘制视频帧,并利用`setOpacity`方法设置不透明度。 以下是一个简化的示例代码框架: ```cpp #include <QGraphicsVideoItem> #include <QTimer> #include <QPainter> #include <QGraphicsScene> // 假设已经有一个QGraphicsVideoItem实例名为videoItem QGraphicsVideoItem* videoItem; float opacity = 0.0f; // 初始透明度为0(完全透明) bool fadingIn = true; // 初始状态设置为淡入 QTimer* timer = new QTimer(this); connect(timer, &QTimer::timeout, [this](){ if(fadingIn) { opacity += 0.05f; // 增加透明度值 if(opacity >= 1.0f) { opacity = 1.0f; fadingIn = false; } } else { opacity -= 0.05f; // 减少透明度值 if(opacity <= 0.0f) { opacity = 0.0f; fadingIn = true; } } videoItem->videoFrame().image().mirrored(false, true).scaled(videoItem->boundingRect().size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); update(); // 重绘场景 }); // 在需要的时候启动定时器 timer->start(100); // 每100ms改变一次透明度 // 重写paint方法来绘制视频帧 void YourGraphicsView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { if (videoItem->isValid()) { painter->save(); painter->setOpacity(opacity); videoItem->paint(painter, nullptr); painter->restore(); } } ``` 注意,这个代码只是一个框架,需要根据你的具体需求进行调整和完善。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamLife.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值