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

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

  • 相关阅读:
    浏览器版本过低
    虚拟PWN初探
    elasticsearch常用查询
    python安装pip模块
    spark-kafka-es交互 优化
    scala写文件
    python unittest
    scala collection(集合)
    spark-kafka-es交互
    scala语法
  • 原文地址:https://www.cnblogs.com/wuyaSama/p/5447149.html
Copyright © 2011-2022 走看看