01QT编写自己的UC浏览器-编写带标题栏和Aero效果的浏览器框架

1.编写windows下带Aero特效的QT窗口

简介:主要设计QT无边框窗口,如果单纯使用QT常用功能可以设计出支持缩放,拖拽,阴影等功能,但是windows自带的非常实用的snap效果确很难做到尽善尽美。因此这里使用的是QT5之后支持的功能,来设计带WINDOWS下的阴影、缩放、拖拽、Aero Snap效果的窗口。

参考博客:http://www.cnblogs.com/findumars/p/6204345.html

参考代码:https://github.com/deimos1877/BorderlessWindow

少走弯路:

1).之前设计的出支持缩放,拖拽,阴影等功能的QT窗口,缩放使用的是NativeEvent()函数,拖拽使用的是根据鼠标按住和松开位置进行move(x,y),阴影使用的是paintEvent()函数。设计效果如下:


参考代码:http://download.csdn.net/detail/qq_31215157/9922187

2).http://blog.csdn.net/imxiangzi/article/details/49962365 和 http://blog.csdn.net/jan5_reyn/article/details/39042197 这两篇博客介绍的仅仅是毛玻璃特效,在无边框的QT窗口无法满足一些功能,如边界自动缩放尺寸等,不建议参考。

设计说明:

参考代码解析:

1)按键控制:F6边框控制,F7阴影控制,F5未知

 case WM_KEYDOWN: {
      switch ( wParam ) {
        case VK_F5: {
          window->borderlessResizeable = !window->borderlessResizeable;
          break;
        }
        case VK_F6: {
          window->toggleShadow();
          window->toggleBorderless();
          SetFocus( winId );
          break;
        }
        case VK_F7: {
          window->toggleShadow();
          break;
        }
      }

      if ( wParam != VK_TAB ) return DefWindowProc( hWnd, message, wParam, lParam );

      SetFocus( winId );
      break;
    }
2)控制拖拽,拖拽宽度可调,默认为5,不影响最大化显示。
case WM_NCHITTEST: {
      if ( window->borderle
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值