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部件透明阴影 不规则窗体内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 内核线程优先级设置的方法介绍

    内核线程优先级设置的方法介绍

    本篇文章介绍了,内核线程优先级设置的方法。需要的朋友参考下
    2013-05-05
  • ShellExecute函数用法的实例代码

    ShellExecute函数用法的实例代码

    ShellExecute函数用法的实例代码,需要的朋友可以参考一下
    2013-03-03
  • 使用C/C++读写.mat文件的方法详解

    使用C/C++读写.mat文件的方法详解

    这篇文章主要为大家详细介绍了使用C/C++读写.mat文件的方法,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C++ pthread入门指南

    C++ pthread入门指南

    pthread是C++98接口且只支持Linux,使用时需要包含头文件#include <pthread.h>,编译时需要链接pthread库,其中p是POSIX的缩写,而POSIX是Portable Operating System Interface的缩写,这篇文章主要介绍了C++ pthread简介,需要的朋友可以参考下
    2024-05-05
  • C/C++堆区专篇精讲

    C/C++堆区专篇精讲

    一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢,让我们一起来看看
    2022-10-10
  • C语言学习进阶篇之万字详解指针与qsort函数

    C语言学习进阶篇之万字详解指针与qsort函数

    之前的指针详解中,提到过qsort函数,这个函数是用来排序的,下面这篇文章主要给大家介绍了关于C语言指针与qsort函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • C++多态的示例详解

    C++多态的示例详解

    多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。本文将通过三个小案例让大家更深入的了解一下C++的多态,感兴趣的可以了解一下
    2022-06-06
  • C++数据结构之实现邻接表与邻接矩阵的相互转换

    C++数据结构之实现邻接表与邻接矩阵的相互转换

    这篇文章主要为大家学习介绍了C++如何实现邻接表与邻接矩阵的相互转换,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-07-07
  • C++ Struct结构体用法浅析

    C++ Struct结构体用法浅析

    前边我们所定义的类,均是使用struct关键字来定义,但是C++中真正用于定义类的关键字为class,因为要C++兼容C,所以保留struct关键字,struct与class的用法完全相同
    2023-03-03
  • C语言代码实现扫雷游戏

    C语言代码实现扫雷游戏

    这篇文章主要为大家详细介绍了C语言代码实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论