欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

Qt中CQGUI框架之阴影圆角窗口实现

时间:2021-09-30 08:57:59|栏目:C代码|点击:

大家好,我是IT文艺男,来自一线大厂的一线程序员

今天给大家讲解基于C++/Qt的CQGUI框架的阴影圆角窗口实现,实现效果如下图所示::

CQGUI开发环境::

  • Microsoft Visual Studio 2019
  • Qt5.15.1

步骤如下:

一、继承关系

class LoginPanel : public QDialog

二、窗口属性

setAttribute(Qt::WA_TranslucentBackground); //设置顶层面板背景透明
setWindowFlags(Qt::FramelessWindowHint); //设置无边框
setContentsMargins(10, 10, 10, 10);

Qt::WA_TranslucentBackground Indicates that the widget should have a translucent background, i.e., any non-opaque regions of the widgets will be translucent because the widget will have an alpha channel. Setting this flag causes WA_NoSystemBackground to be set. On Windows the widget also needs the Qt::FramelessWindowHint window flag to be set. This flag is set or cleared by the widget's author.

三、设置阴影效果

auto *defaultShadow = new QGraphicsDropShadowEffect();
defaultShadow->setBlurRadius(10.0);
defaultShadow->setColor(QColor(0, 0, 0, 160));
defaultShadow->setOffset(0, 0);
_loginMainFrm->setGraphicsEffect(defaultShadow);

四、设置样式

QFrame#loginMainFrm>QFrame#leftFrame{
 background:rgba(255,255,255,0.9);
 border-top-left-radius:6px;
  border-top-right-radius:0px;
  border-bottom-right-radius:0px;
  border-bottom-left-radius:6px;
}

五、事件响应

protected:
  void mousePressEvent(QMouseEvent *e) override ;
  void mouseReleaseEvent(QMouseEvent *e) override ;
  void mouseMoveEvent(QMouseEvent *e) override ;
  void closeEvent(QCloseEvent *e) override ;
  bool event(QEvent* e) override ;
protected:
  bool eventFilter(QObject* o, QEvent* e) override;

上一篇:浅谈C++变量作用域

栏    目:C代码

下一篇:使用C语言操作文件的基本函数整理

本文标题:Qt中CQGUI框架之阴影圆角窗口实现

本文地址:http://www.codeinn.net/misctech/178225.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有