使用Qt框架怎么实现一个透明无边框窗口

  介绍

使用Qt框架怎么实现一个透明无边框窗口?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

第一步:开启窗口的透明层。

setWindowFlags (Qt:: FramelessWindowHint);,/*,注意:如果单纯开启窗口透明层效果,在Windows系统中必须设置,,其他系统可忽略只*/setAttribute (Qt: WA_TranslucentBackground);

第二步:重写paintEvent事件并使用QPainter画透明层。

void  paintEvent (QPaintEvent  *)   {   QPainter 才能;画家(这个);/*,才能0 x20为透明层颜色,可自定义设置为0 x0到0 xff  */painter.fillRect才能(这→矩形(),,QColor (0, 0, 0, 0 x20)),,   }

<强> 0 x01如何无边框窗口?

设置<代码> setWindowFlags (Qt:: FramelessWindowHint); 即可无边框窗口,但无法移动和改变大小。

<强> 0 x02如何拖拽窗口?

由于系统窗口被设置为<代码> Qt:: FramelessWindowHint> void  mousePressEvent (QMouseEvent  *事件)   {   if 才能;(事件→按钮(),==,Qt:: LeftButton), {   ,,,/*,捕获按下时坐标,*/,,,m_startPoint =, frameGeometry () .topLeft(),安康;事件→globalPos ();   ,,}   }      void 摇干(QMouseEvent  *事件)   {/*,才能移动窗口,*/这才能→移动(事件→globalPos (), +, m_startPoint);   }

<强> 0 x03完整代码

# include  & lt; QWidget>   # include  & lt; QVBoxLayout>   # include  & lt; QPushButton>   # include  & lt; QPainter>   # include  & lt; QMouseEvent>      class  TransparentWidget : public  QWidget   {   Q_OBJECT才能   公众:   TransparentWidget才能(QWidget  * parent =, 0)   ,,,:,QWidget(父)   {才能   ,,,setWindowTitle (QString: fromLocal8Bit(“透明无边框窗口“));   ,,,setFixedSize (480,, 320);   ,,,setWindowFlags (Qt:: FramelessWindowHint);   ,,,setAttribute (Qt:: WA_TranslucentBackground);      ,,,QPushButton  * button =, new  QPushButton (“Hello 世界!“,,);   ,,,按钮→setGeometry(5日,5日,80年,40);   ,,}      void 才能paintEvent (QPaintEvent  *)   {才能   ,,,QPainter 画家(这个);   ,,,painter.fillRect(这→矩形(),,QColor (0, 0, 0, 0 x20)),,/*,设置透明颜色,*/,,}      void 才能mousePressEvent (QMouseEvent  *事件)   {才能   ,,,if (事件→按钮(),==,Qt:: LeftButton), {   ,,,,,m_startPoint =, frameGeometry () .topLeft(),安康;事件→globalPos ();   ,,,}   ,,}      void 才能摇干(QMouseEvent  *事件)   {才能   ,,,这个→移动(事件→globalPos (), +, m_startPoint);   ,,}      私人:   QPoint 才能;m_startPoint;   };

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

使用Qt框架怎么实现一个透明无边框窗口