窗口设置为Qt::Popup时, 如何去掉窗口阴影?

转自:http://blog.youkuaiyun.com/robertkun/article/details/38081081


[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. CFlowerWid::CFlowerWid(QWidget *parent)  
  2.     : QWidget(parent)  
  3. {  
  4.     ui.setupUi(this);  
  5.     setWindowFlags(windowFlags() | Qt::FramelessWindowHint | Qt::Popup);  
  6.     setAttribute(Qt::WA_TranslucentBackground);  
  7. }  

窗口设置为Qt::Popup时, window7下会自带一个阴影. 

如何去掉窗口阴影?

代码:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. bool CFlowerWid::event(QEvent *event)  
  2. {  
  3.     // class_ameneded 不能是custommenu的成员, 因为winidchange事件触发时, 类成员尚未初始化  
  4.     static bool class_amended = false;   
  5.     if (event->type() == QEvent::WinIdChange)  
  6.     {  
  7.         HWND hwnd = reinterpret_cast<HWND>(winId());  
  8.         if (class_amended == false)  
  9.         {  
  10.             class_amended = true;  
  11.             DWORD class_style = ::GetClassLong(hwnd, GCL_STYLE);  
  12.             class_style &= ~CS_DROPSHADOW;  
  13.             ::SetClassLong(hwnd, GCL_STYLE, class_style); // windows系统函数  
  14.         }  
  15.     }  
  16.     return QWidget::event(event);  
  17. }  

需要执行Windows函数,
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. SetClassLong(hwnd, GCL_STYLE, class_style);  
记录一下, 免得忘了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值