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

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

  • 相关阅读:
    js字符串函数
    js流程语句
    js数组
    js变量
    js运算符
    Time.deltaTime和Time.realtimeSinceStartup
    Prefabs实例化 ResourceMgr
    SLua
    判断物体是否在摄像机内
    [Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
  • 原文地址:https://www.cnblogs.com/wuyaSama/p/5447149.html
Copyright © 2011-2022 走看看