码迷,mamicode.com
首页 > 其他好文 > 详细

Qt 通过绘画设置边框阴影

时间:2018-03-23 01:00:42      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:draw   img   ado   rac   round   strong   text   i++   height   

[cpp] view plain copy
 
  1. 首先widget设置  
  2.     setWindowFlags(Qt::FramelessWindowHint);  
  3.     setAttribute(Qt::WA_TranslucentBackground, true);  

[cpp] view plain copy
 
  1. 然后重载paintevent  
  2. void ShadowMethod::paintEvent(QPaintEvent *event)  
  3. {  
  4.     QPainterPath path;  
  5.      path.setFillRule(Qt::WindingFill);  
  6.      path.addRect(10, 10, this->width()-20, this->height()-20);  
  7.   
  8.      QPainter painter(this);  
  9.      painter.setRenderHint(QPainter::Antialiasing, true);  
  10.      painter.fillPath(path, QBrush(Qt::white));  
  11.   
  12.      QColor color(92,93,95,50);  
  13.      int arr[10] = {150,120,80,50,40,30,20,10,5,5};  
  14.      for(int i=0; i<10; i++)  
  15.      {  
  16.          QPainterPath path;  
  17.          path.setFillRule(Qt::WindingFill);  
  18.          if(i == 5)  
  19.              path.addRect(10-i-1, 10-i-1, this->width()-(10-i)*2, this->height()-(10-i)*2);  
  20.          else  
  21.             path.addRoundedRect(10-i-1, 10-i-1, this->width()-(10-i)*2, this->height()-(10-i)*2,2,2);  
  22.   
  23.          color.setAlpha(arr[i]);  
  24.          painter.setPen(color);  
  25.          painter.drawPath(path);  
  26.   
  27.      }  
  28.   
  29.   
  30. }  
[cpp] view plain copy
 
  1.   
[cpp] view plain copy
 
  1. 效果图:  
[cpp] view plain copy
 
  1. <img src="http://img.blog.csdn.net/20171011165958714?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHpwYmxvZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">  
 
https://blog.csdn.net/xzpblog/article/details/78205710

Qt 通过绘画设置边框阴影

标签:draw   img   ado   rac   round   strong   text   i++   height   

原文地址:https://www.cnblogs.com/findumars/p/8627697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!