让Qt支持Win7的Aero和毛玻璃效果

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让Qt支持Win7的Aero和毛玻璃效果相关的知识,希望对你有一定的参考价值。

Qt5增加了许多特性,其中 Qt Windows Extras 模块就增加了对Win7 Aero 效果的支持。

官网的介绍如下:

Qt Windows Extras provide classes and functions that enable you to use miscellaneous Windows-specific functions. For example, you can convert Qt objects to Windows object handles and manipulate DWM glass frames.

 

In addition, you can use features introduced with Windows 7, such as Aero Peek, Jump Lists, a progress indicator on a taskbar button, or a thumbnail toolbar.


    现在我们将该模块来实现Win7的Aero窗口。

步骤(1):在Qt工程中添加模块:winextras
步骤(2):包含头文件:<QtWin>

源代码(从Qt5示例中截取来的):

  1. if (QtWin::isCompositionEnabled())                           //返回DWM组合状态
  2. {
  3.    QtWin::extendFrameIntoClientArea(this, -1, -1, -1, -1);    //玻璃效果
  4.    setAttribute(Qt::WA_TranslucentBackground, true);         //半透明背景
  5.    setAttribute(Qt::WA_NoSystemBackground, false);           //禁用无背景
  6.    setStyleSheet("MusicPlayer { background: transparent; }");
  7. }
  8. else
  9. {
  10.    QtWin::resetExtendedFrame(this);
  11.    setAttribute(Qt::WA_TranslucentBackground, false);
  12.    setStyleSheet(QString("MusicPlayer { background: %1; }").arg(QtWin::realColorizationColor().name()));
  13. }


看效果:
                

参考:
http://qt-project.org/doc/qt-5/qtwinextras-index.html                  qtwinextras索引
http://qt-project.org/doc/qt-5/qtwinextras-overview.html           qtwinextras概述
http://qt-project.org/doc/qt-5/qtwin.html                                    QtWin API     

http://blog.csdn.net/jan5_reyn/article/details/39042197

以上是关于让Qt支持Win7的Aero和毛玻璃效果的主要内容,如果未能解决你的问题,请参考以下文章

Aero:如何在玻璃上绘制 ClearType 文本?

Qt / PyQt 简易毛玻璃效果

Qt / PyQt 简易毛玻璃效果

Qt / PyQt 简易毛玻璃效果

如何创建具有不同 Aero 玻璃框架的窗户?

带有 WPF 的 Aero 玻璃框架上类似于 Windows 资源管理器的搜索框