Qt 之 设置窗口边框的圆角

AI摘要

本文介绍了在Qt中设置窗口边框圆角的两种方法,包括使用setStyleSheet属性和在paintEvent事件中绘制。详细解释了border-radius属性的用法,并提供了实际代码示例,展示了不同设置下的效果。同时提到了消除圆角锯齿的技巧以及如何设置按钮无边框背景。

Qt技术学习班开始了,更多精彩、好玩的内容等着你,赶紧报名吧! 群号:655815739


Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口。下面分别叙述用这两种方式来实现窗口边框圆角的效果。

一、使用setStyleSheet方法

this->setStyleSheet(“QWidget{background-color:gray;border-top-left-radius:15px;border-top-right-radius:5px;}”));
使用的主要是使用border-radius 属性,关于这个属性,可选的样式有
border-top-left-radius 设置左上角圆角;
border-top-right-radius 设置右上角圆角;
border-bottom-left-radius 设置左下角圆角;
border-bottom-right-radius 设置右下角圆角;
border-radius 设置四个角圆角;

关于border-radius 后面的参数
(1)一个参数
border-radius:15px

这里写图片描述

(2)两个参数
border-radius: 15px 50px
第一个参数设置X轴方向的半径
第二个参数设置Y轴方向的半径
这里写图片描述

从图中可以看出设置一个参数代表X轴和Y轴设置了同样的值,而两个参数分别为X轴和Y轴方向的半径。大家可以根据不同需要去设置参数。

二、在paintEvent事件中绘制窗口边框

这里我们需要重写paintEvent方法,具体代码如下:

void paintEvent(QPaintEvent *event)
{
	QPainter painter(this);
	painter.setRenderHint(QPainter::Antialiasing);	// 反锯齿;
	painter.setBrush(QBrush(Qt::red));
	painter.setPen(Qt::transparent);
	QRect rect = this->rect();
	rect.setWidth(rect.width() - 1);
	rect.setHeight(rect.height() - 1);
	painter.drawRoundedRect(rect, 15, 15);
	//也可用QPainterPath 绘制代替 painter.drawRoundedRect(rect, 15, 15);
	{
		QPainterPath painterPath;
		painterPath.addRoundedRect(rect, 15, 15);
		p.drawPath(painterPath);
	}
	QWidget::paintEvent(event);
}

效果如下:

这里写图片描述

如果不写painter.setRenderHint(QPainter::Antialiasing);则圆角会出现锯齿,如下图。
这里写图片描述
仔细对比上图可以看见圆角曲线有锯齿状。

注意:

(1)在使用这两种方法的时候需要设置窗口的属性。
	this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明
	this->setWindowFlags(Qt::FramelessWindowHint);   //设置无边框窗口
	
(2)主窗体加载不了样式时需要在paintEvent事件中加上如下代码。
{
	QStyleOption opt;
	opt.init(this);
	QPainter p(this);
	style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
	QWidget::paintEvent(event);
}

设置按钮的背景边框

原始图
这里写图片描述

设置无边框或者背景透明可以去掉白色方框
这里写图片描述

给按钮设置如下样式即可。
{background-color:transparent;}
或者
{border:none;}

QT 基础入门【QSS篇】QT如何实现圆角效果 border-radius 设置四个角圆角; 阅读详情

相关推荐

用Qt实现带圆角的窗口

设置窗口的flags属性为Qt::FramelessWindowHint,这样可以去除窗口的标题栏和边框。设置窗口的windowOpacity属性可以实现窗口的透明效果。其中,widget是指窗口控件的名称,border-radius表示设置窗口的圆角大小,background表示设置窗口的背景颜色。在Qt中,我们可以通过设置窗口的样式表来实现圆角窗口的效果。通过以上步骤,我们就可以实现一个带有圆角的窗口了。在Qt的设计器中打开你的窗口界面,选择窗口控件。显示窗口:使用show()函数显示窗口即可。

CodeVorter的博客 1835

Qt之设置窗口边框的圆角

在Qt中,我们可以使用样式表(Stylesheet)来设置窗口的外观和样式。这个示例代码创建了一个简单的主窗口,并将所有的QWidget(包括主窗口)的边框圆角设置为10个像素。首先,我们需要创建一个新的Qt应用程序项目。在Qt中,我们可以使用样式表(Stylesheet)来设置窗口的外观和样式。要设置窗口边框的圆角,我们可以使用样式表中的。上述代码将设置所有的QWidget(包括主窗口)的边框圆角为10个像素。希望这个示例能帮助你设置Qt窗口的边框圆角。下面是详细的步骤和相应的源代码示例。

CyberWizarDD的博客 2265

Qt实现圆角窗口

某些时候为了界面美观,需要给窗口加圆角,例如Mac的很多软件的四个角都是用的圆角,国产系统deepin, uos也是这种界面风格,例如下图: 下面介绍用Qt如何实现这种带有圆角的窗口,主要有两种方法:样式表和窗口重绘。 方法1:样式表实现 首先需要设置窗口透明,去掉边框,再用样式表设置背景色,圆角等,主要代码如下: #include "widget.h" #include "ui_widget.h" #include <QStyleOption> #include <QPainter&g

琅嬛福地 3088

基于Landsat-8数据的山西省吕梁市地表温度反演研究过程(大气校正法)

1.数据下载:本实验采用的数据是 ①从地理空间数据云下载的来自landsat8 卫星,云量<=1%,时间为2017年5月12日的山西省吕梁市影像数据。为全面覆盖吕梁市,选用了两片影像。 ②吕梁市边界矢量图 2.数据预处理 ...

weixin_45747376的博客 6600

Excel也能玩转K-means聚类?手把手教你用表格搞定用户分群(附完整公式)

本文详细介绍了如何在Excel中实现K-means聚类算法,无需编程即可完成用户分群。通过SUMIF、SQRT等基础函数,从数据预处理到最终分群全流程手把手教学,特别强调数据标准化和迭代优化的关键步骤,帮助运营团队低成本高效分析用户行为数据。

weixin_30555125的博客 180

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1532

【R语言-生存分析之观察生存率计算】

全人群肿瘤登记资料常用的统计分析指标包括发病率、死亡率、现患率以及生存率等,其中肿瘤生存率是评估肿瘤治疗效果和肿瘤负担的必要指标,其计算涉及肿瘤患者的发病、 死亡和随访三个方面的资料, 数据整理和计算过程均较为复杂, 如何及时、 准确地计算肿瘤生存率, 并使其可以在不同地区、 不同人群、不同时期间被客观公正地比较和评价,仍然是统计学家们一直在研究的主题。

weixin_46579654的博客 5439

【AI测试干货】软件测试 - 全流程提示词完整体系

本篇教程是一套专为软件测试工程师打造的 AI 协作提示词体系。从测试计划制定、用例设计、自动化脚本开发、缺陷管理,到测试报告生成,每个环节都提供了结构化的提示词模板,帮助测试人员高效利用 AI 提升工作质量。

blues_C的博客 344

AttributeError: module ‘numpy‘ has no attribute ‘int‘解决方案

本文主要介绍了AttributeError: module ‘numpy’ has no attribute 'int’解决方案,希望能对使用numpy的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 方案一 2.2 方案二

weixin_43178406的博客 28万+

【图像去噪】论文复现:大道至简!NAFNet的Pytorch源码复现!跑通NAFNet源码,补充PlainNet,由大到小拆解NAFNet网络结构,由小到大实现结构组合,逐行注释!

论文题目:Simple Baselines for Image Restoration —— 图像恢复的简单基线【图像去噪】论文精读:Simple Baselines for Image Restoration(NAFNet)本文以SIDD数据集为例,跑通NAFNet源码,详解NAFNet网络结构与实现。建议与KBNet和CGNet的复现文件综合查看。训练和测试代码解析见单独的BasicSR源码精读(后续会出)。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 2990

【软考高级架构】案例题考前突击6——大数据架构

前一类的数据主要由流量方以接口的方式提供(比如对接的腾讯广点通平台),后一类则是某网特有的数据,通过买家的浏览、下单、付款日志算出来。1. 在数据层面只维护一张包含所有指标的MySQL表,表中的stday字段作为索引,stday=当天的保存实时数据,stday<当天的保存离线数据。典型的大数据架构,除了Lambda架构之外,还有kappa架构,这两个架构的区别如下标所示,请补充表中空(1)-(4)第二,实时数据只对接了内部的kafka消息,没有实时的获取第三方的曝光、点击、浏览数据。

qq837993702的博客 66

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

下一篇: 1.7 补充——C++ GUI Programming with Qt 4 中的信号与槽
前行中的小猪
前行中的小猪 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄10年 4万+粉丝 134原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值