Qt控件1——呼吸灯

在Qt开发界面中建立数据通信时,通常使用一个呼吸灯亮来指示数据的通信,如:亮红灯代表数据中断,亮绿灯代表数据接通
在文件中使用了lightpoint.cpp文件封装了呼吸灯的主要操作函数,如下所示:

#include "lightpoint.h"
#include "qpainter.h"
#include "qevent.h"
#include "qtimer.h"

LightPoint::LightPoint(QWidget *parent) : QWidget(parent)
{
   
    step = 10;
    interval = 100;    
    bgColor = QColor(255, 0, 0);

    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    timer->start(100);

    offset = 0;
    add = true;
}

LightPoint::~LightPoint()
{
   
    if (timer->isActive()) {
   
        timer->stop();
    }
}

void LightPoint::paintEvent(QPaintEvent *)
{
   
    int width = this->width();
    int height = this->height();
    int side = qMin(width, height);

    //绘制准备工作,启用反锯齿,平移坐标轴中心,等比例缩放
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
    painter.translate(width / 2, height / 2);
    painter.scale(side / 
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt 3D模块中,可以使用QML来创建发光效果。具体步骤如下: 1. 创建一个QML文件,定义一个Material元素和一个ShaderEffect元素,如下所示: ```qml import Qt3D.Core 2.0 import Qt3D.Render 2.0 import Qt3D.Extras 2.0 Material { id: glowMaterial effect: ShaderEffect { property variant source: "#include \"glow.frag\"" property variant uniforms: Qt3DRender.Uniforms { Qt3DRender.Uniform { name: "color" value: Qt.rgba(1.0, 1.0, 1.0, 1.0) } Qt3DRender.Uniform { name: "intensity" value: 1.0 } } } } ``` 2. 创建一个GLSL着色器文件,命名为glow.frag,定义发光效果的着色器代码,如下所示: ```glsl #version 330 uniform vec4 color; uniform float intensity; out vec4 fragColor; void main() { fragColor = color * intensity; } ``` 3. 在场景中使用刚才创建的Material元素来渲染模型,例如: ```qml Entity { id: myEntity components: [ ... PhongMaterial { id: myMaterial ambient: Qt.rgba(0.2, 0.2, 0.2, 1.0) diffuse: Qt.rgba(0.8, 0.8, 0.8, 1.0) specular: Qt.rgba(1.0, 1.0, 1.0, 1.0) shininess: 80 }, ... ] } Entity { components: [ ... MeshRenderer { id: myMeshRenderer mesh: myMesh material: glowMaterial }, ... ] } ``` 在这个例子中,myEntity表示模型实体,myMaterial表示模型材质,myMeshRenderer表示网格渲染器,myMesh表示3D模型网格。通过将glowMaterial赋值给myMeshRenderer的material属性,即可为模型添加发光效果。 需要注意的是,这只是一个简单的例子,实际应用中可能需要根据具体需求进行调整。另外,发光效果的实现还可以通过其他方式,例如使用后期处理效果等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

六竹书生__wa

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

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

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

打赏作者

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

抵扣说明:

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

余额充值