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

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

  • 相关阅读:
    [NOIp2009] $Hankson$ 的趣味题
    [洛谷P1730] 最小密度路径
    [NOIp2015] 运输计划
    [NOIp2012] 借教室
    [NOIp2012] 国王游戏
    [NOIp2016] 蚯蚓
    [洛谷P1272] 重建道路
    [洛谷P1273] 有线电视网
    [ZJOI2010] 数字计数
    ☆ [HDU2089] 不要62「数位DP」
  • 原文地址:https://www.cnblogs.com/wuyaSama/p/5447149.html
Copyright © 2011-2022 走看看