zoukankan      html  css  js  c++  java
  • 给QT不规则窗口添加阴影

    在家休息,试着用QT去模仿各类管家软件的界面,做到自绘阴影的时候,蛋疼了。

    网上搜到的基本都是一篇文章转来转去,一开始也被思路限制了。

    尝试重载paintEvent,然后自己绘制矩形阴影,但是绘制的算法始终觉得有问题,最后发现 QGraphicsDropShadowEffect 这个一个好东西,虽说网上有提到,但是基本都是用它来绘制子控件阴影,所以我好奇,为什么不直接放个QFrame在窗口中间,四边留出阴影位置,主窗口背景设置为透明,Qfram设置阴影效果不就OK了?
    说干就干,代码摘要如下:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        setWindowFlags(Qt::FramelessWindowHint);
        setAttribute(Qt::WA_TranslucentBackground);
    
        auto shadowEffect = new QGraphicsDropShadowEffect(this);
        shadowEffect->setOffset(0,0);
        shadowEffect->setColor(Qt::black);
        shadowEffect->setBlurRadius(12);
        ui->frmBg->setGraphicsEffect(shadowEffect);
    }
    

    frame控件里设置样式表

    QFrame {
    background-image: url(:/form/blue.jpg);
    }
    

    界面编辑状态

    与TX管家对比

    总体来说效果还算不错吧(主要是用着省事)有更好的方式欢迎讨论

  • 相关阅读:
    Getting Started with ASP.NET Web API 2 (C#)
    借助StackView简化页面布局
    获取网络数据
    歌曲列表和频道列表
    自定义UIImage组件实现圆形封面,转动,以及模糊背景
    什么是CoreData?
    Swift
    PNChart图表绘制库的使用
    PathCover个人主页控件使用
    ProgressHUD进程提示控件的使用
  • 原文地址:https://www.cnblogs.com/wuyaSama/p/5447149.html
Copyright © 2011-2022 走看看