• 给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管家对比

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

  • 相关阅读:
    团队项目----数据库SQL语句学习总结与实践
    团队项目----德州扑克数据库设计之改进版
    期末项目《员工考勤管理系统》
    Applet
    Json
    study of javaserver faces lifecycle
    Session
    xml的用途,定义,原理,以及前景
    互联网应用于企业级应用的区别
    JavaEE体系架构
  • 原文地址:https://www.cnblogs.com/wuyaSama/p/5447149.html
Copyright © 2020-2023  润新知