Qt实现简易毛玻璃效果的示例代码

目录
  • 现有功能
  • 运行结果
  • 源码
    • frosted_glass_label.h
    • frosted_glass_label.cpp
    • main.cpp

现有功能

1.用模糊功能实现简易的毛玻璃效果。

2.鼠标移动无边框窗口。

运行结果

源码

frosted_glass_label.h

#ifndef FROSTEDGLASSLABEL_H
#define FROSTEDGLASSLABEL_H

#include <QWidget>
#include <QLabel>
#include <QMouseEvent>

class FrostedGlassLabel : public QLabel
{
    Q_OBJECT

public:
    FrostedGlassLabel(QWidget *parent = nullptr);
    ~FrostedGlassLabel();

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);

private:
    void setBackgroundColor();                  // 设置窗口背景颜色
    void blur();                                // 模糊

private:
    float startX;                               // 这两个变量用来移动窗口
    float startY;

};
#endif // FROSTEDGLASSLABEL_H

frosted_glass_label.cpp

#include "frosted_glass_label.h"
#include <Qt>
#include <QPalette>
#include <QColor>
#include <QGraphicsBlurEffect>

FrostedGlassLabel::FrostedGlassLabel(QWidget *parent)
    : QLabel(parent)
{
    this->resize(300, 100);
    this->setWindowFlags(Qt::FramelessWindowHint);
    this->setBackgroundColor();
    this->blur();
}

FrostedGlassLabel::~FrostedGlassLabel()
{
}

void FrostedGlassLabel::setBackgroundColor() {
    QPalette palette;
    palette.setColor(QPalette::Background, QColor(245, 245, 245, 250));
    this->setPalette(palette);
    this->setAutoFillBackground(true);
}

void FrostedGlassLabel::blur() {
    QGraphicsBlurEffect *blur = new QGraphicsBlurEffect();
    blur->setBlurRadius(30);
    blur->setBlurHints(QGraphicsBlurEffect::QualityHint);
    this->setGraphicsEffect(blur);
}

void FrostedGlassLabel::mousePressEvent(QMouseEvent *event) {
    QLabel::mousePressEvent(event);
    this->startX = event->x();
    this->startY = event->y();
}

void FrostedGlassLabel::mouseMoveEvent(QMouseEvent *event) {
    QLabel::mouseMoveEvent(event);
    float disX = event->x() - this->startX;
    float disY = event->y() - this->startY;
    this->move(this->x()+disX, this->y()+disY);
}

main.cpp

#include "frosted_glass_label.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    FrostedGlassLabel w;
    w.show();
    return a.exec();
}

到此这篇关于Qt实现简易毛玻璃效果的示例代码的文章就介绍到这了,更多相关Qt毛玻璃效果内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Qt自定义图形实现拖拽效果

    本文实例为大家分享了Qt自定义图形实现拖拽效果的具体代码,供大家参考,具体内容如下 在这里自定义图形是通过QPaintEvent事件绘画的图形,也可以通过自定义控件的方式添加到qt中. 首先定义类来自定义图形,这里通过paintEvent事件来实现(主要就是绘画一个图形) void QEventView::paintEvent(QPaintEvent *event) { resize(115+m_iLen,36); QPainter painter(this); painter.setRende

  • Qt实现屏幕底部冒泡效果

    在Qt局域网聊天程序的到的东西太多了,最想和大家分享的是关于局域网聊天信息的冒泡,他的设计也不是特别难,我写了一个类分享给大家. 可能各位道友有更好的办法,但希望不要拆台哦. 该类中有一部分适应屏幕分辨率的类,也一并加入.如有不懂的欢迎大家留言. 首先是获取屏幕分辨率,并实现自适应屏幕分辨率. #ifndef VERDESKTOP_H #define VERDESKTOP_H #include <QObject> #include <QDesktopWidget> class Ve

  • Qt模仿实现文字浮动字母的效果

    目录 前沿 功能实现 定时器操作 文本偏移实现 控件自绘 总结 前沿 最近可能是小视频着魔了,尤其是动画字幕效果的,身为一名技术开发人员,当然是想试一试了,哪怕只是简单的移动也是可以的~ 这不,说干就干拿起来我的C++语言就要尝试,还好使用的Qt框架,这样是使用MFC框架写小demo,真的好困难呀! 先来看一看我实现的效果吧~ 效果很简单就是文本向上移动,在移动过程中文字整体变大或缩小. 那么,我就来讲解下我是如何实现的吧! 功能实现 在实现这个文本移动的效果过程中,用到了以下几个功能: 1:定

  • Qt实现樱花飞舞效果

    本文实例为大家分享了Qt实现樱花飞舞效果的具体代码,供大家参考,具体内容如下 应女友要求,使用Qt做了一个在电脑桌面樱花飞舞的小程序.这里面用到了Qt动画效果QPropertyAnimation类来控制飞舞效果.使用label加载樱花图案.大概的核心代码如下: Widget::Widget(QWidget *parent) : QWidget(parent), timer(new QTimer(this)), pixmap(new QPixmap(":/cherry.png")), u

  • Qt实现炫酷启动图动态进度条效果

    目录 一.简述 二.动效进度条 1.光效进度条 2.延迟到达进度条 3.接口说明 三.启动图 1.实现思路 2.背景图切换 四.测试 1.构造启动图 2.背景图 3.其他信息 4.事件循环 五.源码 一.简述 最近接到一个新需求,让做一个动效进度条. 由于我们的产品比较大,在软件启动的时候会消耗比较长的时间,原生的进度条已经不能满足我们的需求,这里我们就需要一个会动的进度条,效果如下图所示. 光效进度条主要是做了一个进度动画,在已完成的部分上进行快速的迭代渲染,给用户一种直观感受,我们的软件一直

  • Qt实现简易毛玻璃效果的示例代码

    目录 现有功能 运行结果 源码 frosted_glass_label.h frosted_glass_label.cpp main.cpp 现有功能 1.用模糊功能实现简易的毛玻璃效果. 2.鼠标移动无边框窗口. 运行结果 源码 frosted_glass_label.h #ifndef FROSTEDGLASSLABEL_H #define FROSTEDGLASSLABEL_H #include <QWidget> #include <QLabel> #include <

  • Qt实现字幕滚动效果的示例代码

    目录 一.项目介绍 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 widget.h头文件 4.2 widget.cpp源文件 五.效果演示 一.项目介绍 利用QTimer实现字幕滚动功能,可以实现自行更改文本内容.自适应文本大小.自由调整速度等功能. 二.项目基本配置 新建一个Qt案例,项目名称为“TextScroll”,基类选择“QWidget”,取消创建UI界面复选框的选中状态,完成项目创建. 三.UI界面设计 无UI界面 四.主程序实现 4.1 widget.h头文件 声明私

  • Qt自绘实现苹果按钮滑动效果的示例代码

    用到的类:QTimer,QPaintEvent,QPainter,QRectF 首先,重写绘制事件,需要在头文件加入QPaintEvent头文件,并定义几个变量. bool ison=false; float currentValue; float widthSize,heightSize; 然后加入如下代码: 思路就是鼠标点击,触发paintEvent函数 void MainWindow::mousePressEvent(QMouseEvent *event){ Q_UNUSED(event)

  • Qt实现网络聊天室的示例代码

    目录 1. 效果演示 2. 预备知识 2.1 QTcpServer 2.2 QTcpServer信号 2.3 QTcpSocket 2.4 QTcpSocket信号 3. 通信流程 3.1 服务器端 3.2 客户端 1. 效果演示 客户端 服务器 连接成功之后 2. 预备知识 在Qt中,实现网络编程的方式比用C++或C实现要方便简单许多,因为Qt已经替我们封装好了,我们会使用就可以了,然后大家还需要了解Qt 的信号槽机制,可以参考我这篇文章,Qt信号槽 2.1 QTcpServer QTcpSe

  • C#实现简易画图板的示例代码

    编程环境 VS2019.C# 画板功能演示 实现简单画图 打开功能 可打开jpg格式的文件 保存功能 可将绘画的内容保存为jpg文件 颜色选择功能 用户可自由选择所需的颜色 粗细选择功能 提供四种型号的画笔供用户选择 清空画布功能 点击清空后提示是否清空 选择确定则将画布清空,效果如下图所示 功能实现过程 定义公共变量 用于多个窗体之间共同使用数据 public class TempData { //用于多个窗体共同使用的数据 public static int size=5; public s

  • Mysql实现简易版搜索引擎的示例代码

    目录 前言 简介 ngram 全文解析器 创建全文索引 检索方式 1.自然语言检索(NATURAL LANGUAGE MODE) 2.布尔检索(BOOLEAN MODE) 与 Like 对比 总结 前言 前段时间,因为项目需求,需要根据关键词搜索聊天记录,这不就是一个搜索引擎的功能吗? 于是我第一时间想到的就是 ElasticSearch 分布式搜索引擎,但是由于一些原因,公司的服务器资源比较紧张,没有额外的机器去部署一套 ElasticSearch 服务,而且上线时间也比较紧张,数据量也不大,

  • 利用Qt实现可扩展对话框的示例代码

    目录 一.项目介绍 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 dialog.h头文件 4.2 dialog.cpp源文件 五.效果演示 可扩展对话框通常用于用户对界面有不同要求的场合.通常情况下,只出现在基本对话窗体:当供高级用户使用或需要更多信息时,可通过某种方式的切换显示完整对话窗体(扩展窗体).切换的工作通常由一个按钮完成. 一.项目介绍 实现一个简单填写资料的对话框.通常情况下,只需要填写姓名和性别.若有特殊需要,还需要填写更多信息时,则切换至完整对话窗体,完整对话窗体

  • 【JS+CSS3】实现带预览图幻灯片效果的示例代码

    一.前期准备 1.1 案例分析 适用场景:单例布局 1.2 方法论 V视图 HTML+CSS+调试 C js实现控制流程 D数据 优化扩展 二.代码 结构 <div class="slider"><!-- 特效区 --> <div class="main"><!-- 主视图区 --> <div class="main_i"> <div class="caption&quo

  • 使用mint-ui实现省市区三级联动效果的示例代码

    引用插件:饿了么的mint-ui组件中的picker功能,具体API可参照官网说明:http://mint-ui.github.io/docs/#/zh-cn2/picker 背景:项目需要做一个省份-城市-地区的选择级联效果,我从gayhub上找了一下,决定使用mint-ui的组件,因为各个功能都很全而且设计跟我们的项目风格类似. 具体实现: 通过阅读官网的实例,大概就能知道这个组件的用法: 在vue中写入组件:<mt-picker :slots="slots" @change

  • Vue 实现展开折叠效果的示例代码

    本文介绍了Vue 实现展开折叠效果的示例代码,分享给大家,具体如下: 效果如见: 1.html代码 <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>js文本段落展开和收拢效果</title> <script type="text/javasc

随机推荐