Qt实现部件透明阴影效果与不规则窗体详解

 更新时间:2023年01月06日 14:30:03   作者:霸道小明  
这篇文章主要为大家详细介绍了Qt实现部件透明阴影效果与不规则窗体的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

透明效果

原始效果

设置整个窗体透明,调用setWindowOpacity( )方法,传入一个0~1之间的值来表示透明度;1表示不透明,0表示完全透明

setWindowOpacity(0.5);//0~1之间

设置窗体透明,部件不透明

setWindowFlags(Qt::FramelessWindowHint);//无边框
setAttribute(Qt::WA_TranslucentBackground);//透明

对单个部件设置透明

QGraphicsOpacityEffect *opacityEffect=new QGraphicsOpacityEffect;
opacityEffect->setOpacity(0.5);
ui->pushButton->setGraphicsEffect(opacityEffect);

设置窗体半透明

需要重写paintEvent( )方法

在.h文件中添加:

protected:
    void paintEvent(QPaintEvent *event);

在方法重写中

//重写paintEvent方法,是实现窗体半透明
void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.fillRect(rect(),QColor(255,255,255,50));
}

之后设置窗体透明,部件不透明时就可以出现窗体班透明效果

setWindowFlags(Qt::FramelessWindowHint);//无边框
setAttribute(Qt::WA_TranslucentBackground);//透明

阴影效果

通过QGraphicsDropShadowEffect类来设置阴影效果

QGraphicsDropShadowEffect *shadowEffect= new QGraphicsDropShadowEffect;
shadowEffect->setColor(QColor(100,100,100));//设置阴影颜色
shadowEffect->setBlurRadius(20);//设置阴影模糊半径
shadowEffect->setOffset(20);//设置阴影偏移值
ui->pushButton->setGraphicsEffect(shadowEffect);

不规则窗体效果

将窗体外形设置成小黄人形状

将准备好的小黄人png图片添加到项目资源中

在页面布局中添加一个Label标签用来显示图片,应用程序大小设置成与图片大学校一致。

在构造函数中初始化,通过setMask( )方法设置遮罩。

QPixmap pixmap;
pixmap.load(":/yellow.png");
ui->label->resize(pixmap.size());
resize(pixmap.size());
//设置遮罩
setMask(pixmap.mask());

重写printEvent( )方法,将图片绘制到应用程序上

到此这篇关于Qt实现部件透明阴影效果与不规则窗体详解的文章就介绍到这了,更多相关Qt部件透明阴影 不规则窗体内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言实现2048小游戏

    C语言实现2048小游戏

    这篇文章主要为大家详细介绍了C语言实现2048小游戏,注释清晰,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • C++ 标准模板类详解

    C++ 标准模板类详解

    今天小编就为大家分享一篇关于C++标准模板类的介绍与使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-09-09
  • VS2017中配置QT5.12.0的图文教程

    VS2017中配置QT5.12.0的图文教程

    本文主要介绍了VS2017中配置QT5.12.0的图文教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • C++详细讲解内存管理工具primitives

    C++详细讲解内存管理工具primitives

    文章向大家介绍C++内存管理primitives,主要包括primitives使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下
    2022-06-06
  • C语言结构体版学生成绩管理系统

    C语言结构体版学生成绩管理系统

    这篇文章主要为大家详细介绍了C语言结构体版的学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C++控制台绘图头文件实例代码

    C++控制台绘图头文件实例代码

    控制台(console)是电脑的最基本交互接口,通常包括键盘(keyboard)和屏幕(screen),下面这篇文章主要给大家介绍了关于C++控制台绘图头文件的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • C++实现含附件的邮件发送功能

    C++实现含附件的邮件发送功能

    这篇文章主要为大家详细介绍了C++实现含附件的邮件发送功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Qt重写QTreeView自绘实现酷炫样式

    Qt重写QTreeView自绘实现酷炫样式

    QTreeView,顾名思义,就是一种树形的控件,在我们需要做类似于文件列表的视图时,是一个不错的选择,下面我们就来看看qt如何重写QTreeView实现酷炫样式,感兴趣的可以了解一下
    2023-08-08
  • C++编译/编辑器对OIer的必要功能(推荐)

    C++编译/编辑器对OIer的必要功能(推荐)

    这篇文章主要介绍了C++编译/编辑器对OIer的必要功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • C++中抽象类和接口的区别介绍

    C++中抽象类和接口的区别介绍

    抽象类(abstract class)和接口(interface)的概念是面向对象设计中常用的概念, 也是比较容易混淆的概念. 在这里, 我提出一种区分它们的思路
    2013-04-04

最新评论