Qt 暗夜黑主题教程(一) 创建带圆角和阴影的无边框窗口
创建项目
创建一个主窗口为 QWidget 类、带 UI样式表的项目。我的项目名叫 NightDark,窗口类名叫 Widget,刚入门的小白可以跟我命名保持一致方便学习,大佬自便。(不对,大佬怎么来光临我的教程了,请受我一拜)
完成创建后项目应该是这样子的:
去除边框
打开 widget.cpp,在构造函数 Widget::Widget(QWidget *parent)
中加入一句代码即可去除系统默认边框:
setWindowFlag(Qt::FramelessWindowHint);
此时 widget.cpp 中完整代码应该是这样的:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);setWindowFlag(Qt::FramelessWindowHint); //设置无边框样式
}Widget::~Widget()
{delete ui;
}
运行效果如下:
编辑UI
双击 widget.ui 打开 UI 编辑器
在左侧组件库中选择 Containers 中的 Widget,拖入窗口中。右键新拖入的 Widget,修改组件名称为 shadowWidget(这个名字可以自己取)。然后右键 shadowWidget 以外的主窗口,选择 布局 - 水平布局(垂直布局也行)。
这样,shadowWidget 就会随着主窗口的大小变化而变化,默认与主窗口保持 9px 大小的边框。
右键 shadowWidget,选择 更改样式表…,在样式表对话框中输入:
background-color: rgb(57, 58, 60);
border-radius: 3px;
表示将背景颜色设置为 (57, 58, 60),并设置大小为 3px 的圆角。
此时运行程序,我们会发现黑色窗口外面有一圈灰色的框。别急,这是我们预留来绘制阴影的区域。
透明背景
编辑完UI后,切换回 widget.cpp。
在构造函数 Widget::Widget(QWidget *parent)
中加入代码:
setAttribute(Qt::WA_TranslucentBackground);
这句代码是用来将窗口背景设置为全透明的。此时运行程序就会发现,刚才多出来的灰色边框被隐藏起来了。
添加阴影
这里将要用到两个头文件,需要填加在代码的开头。放在 widget.cpp 或 widget.h 里都可以:
#include <QColor>
#include <QGraphicsDropShadowEffect>
其中,QColor
用来生成颜色对象,QGraphicsDropShadowEffect
用来生成阴影效果对象。
然后,在构造函数 Widget::Widget(QWidget *parent)
中加入代码:
QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(); //创建阴影效果对象shadow->setBlurRadius(9); //设置阴影大小为9pxshadow->setOffset(0); //设置阴影偏移距离为0pxshadow->setColor(QColor(0, 0, 0, 100)); //设置阴影颜色为透明度为100的(0,0,0)(黑色)ui->shadowWidget->setGraphicsEffect(shadow); //给shadowWidget窗口添加该阴影
到这里,阴影效果就成功地添加到窗口上了。运行效果如下:
Qt 暗夜黑主题教程(一) 创建带圆角和阴影的无边框窗口相关推荐
- Qt Quick无边框窗口
开发环境:Qt Creator 5.6 内容: 使用 Qt Quick创建无边框窗口 Qt Quick是一个无比强大.无比方便快捷的跨平台的开发框架,并且能通过Qt强大的元对象系统实现qml与c+ ...
- 【C++·Qt】Qt透明无边框窗口以及拖动
窗口透明 1.窗口整体透明(包含其子空控件) //窗口以及子控件都透明 //setAttribute(Qt::WA_WState_WindowOpacitySet); //网上说直接设置不起作用,需 ...
- QT实现可移动和改变尺寸的无边框窗口
2019独角兽企业重金招聘Python工程师标准>>> 实现QT无边框窗口的拖动,尺寸改变.需要的时候从该类继承,派生类需要定义为QWidget. 头文件: #ifndef SIZE ...
- QT实现完美无边框窗口(可拖动,可调整大小)
效果如下: 只需定义 nativeEvent 事件即可完成这样的功能 ,但要注意的是,这是通过Windows api实现的. 样例如下:(注意头文件) framelesswidget.h #ifnde ...
- 【QT】自定义无边框窗口分享
[QT/天下wu双]自定义无边框窗口分享 https://www.bilibili.com/video/BV1HA411Y7d4 源码链接:https://github.com/Bili-TianX/ ...
- qt 全屏窗口有边框_如何在全屏无边框窗口模式下玩任何Windows游戏
qt 全屏窗口有边框 If you're a regular PC gamer, you know that playing a game in full screen mode can someti ...
- 火山PC无边框窗口尺寸的调整方法教程
一.配置模块 右键配置模块,勾选"火山模块" 二.窗口布局 三.窗口事件 四.标签事件 五.演示 例子下载:点击本链接
- qt2-无边框窗口创建、拖拽、阴影
文章目录 创建 widget 工程 main.cpp 设置无边框窗口 窗口的拖拽 窗口移动总结反思 阴影效果 关于ui的一点思考 创建 widget 工程 注意这里选择 QWidget 基类即可. 类 ...
- QT 创建一个 可移动、可拉伸的无边框窗体
在使用QT创建窗体的时候,为了使窗口美化,通常不使用QT自带的边框.会调用下面函数去除窗体边框. setWindowFlags(Qt::FramelessWindowHint) 但是有个问题,当去除了 ...
最新文章
- java 位掩码_Java位掩码控制权限与()或(|)非(~)、的介绍
- 关于VC向导生成的COM的注册与反注册
- Java基础学习总结(28)——Java对各种排序算法的实现
- ITK:将不断变化的密集2D水平集可视化为高程图
- ORA-12170:TNS:连接超时
- linux网络编程之sockaddr_in和in_addr区别
- sap commit rollback
- C语言的面向对象设计 —— 对 X264/FFMPEG 架构探讨
- python3 鼠标定位输入及其点击实例
- matlab有shapely包吗,[哈工大]Modelarts NPU 安装shapely包失败
- GifCam v7.0 极简GIF动画录制工具中文单文件版
- 计算机转换汉子英语,电脑打字英文怎么转换中文
- 【火灾疏散建模】基于MATLAB的火灾人员疏散建模编程和仿真分析
- Excel之分类汇总,定位,组合
- 【读书笔记 | 自动驾驶中的雷达信号处理(第4章 雷达波形及其数学模型)】
- 系统集成项目管理工程师(中级)
- VMware系统启动假死,一直处于“繁忙”状态
- 本地推送jar包到远程maven仓库
- (业务)自动生成邀请码
- 「MoreThanJava」计算机发展史—从织布机到IBM
热门文章
- IBinder, BBinder和BpBinder
- 材质常用节点以及用法
- 高一学生计算机学情分析,高一学生学情分析——李涛
- 16级C++课程设计 第二题
- 计算机基础c语言试题,计算机应用基础C语言测试题.doc-资源下载在线文库www.lddoc.cn...
- LeetCode Line x: Char x: runtime error: member access within null pointer of type ‘struct ListNode
- WebGame方案汇总
- 1342. 将数字变成 0 的操作次数 / 1507. 转变日期格式
- linux选哪个显卡,常用linux系统,最好选用哪种显卡?
- 弘辽科技:淘宝怎么包邮?如何设置?