qt使用样式表设置窗口widget为圆角

提要

窗口widget是无法直接通过样式表设置为圆角的,需要在窗口QWidget中拖入控件QFrame,将QFrame设置的和窗口QWidget一样大小,将窗口QWidget中需要的控件拖入到QFrame中。

示例

下面是一个提示工具的窗口。通过它简单的记录一下样式表怎么实现圆角窗口。

效果

在这里插入图片描述
没有很好的 剪裁,看其中的绿色窗口就行。

步骤

1.创建项目,打开ui文件,在ui文件中“排兵部阵”(在QWidget窗口上放置QFrame,在QFrame上放置自己需要的控件,将QWidget设置为透明,设置QFrame为圆角,并设置其背景色实现圆角窗口);
2.在qss文件中编写样式设置;
3.在ui文件对应的类构造函数中设置窗体的背景透明和无边框;
4.在项目中加载qss文件,一般在main函数。

就该项目本身而言:

1.新建文件后,打开ui文件,向其中拖入QFrame控件,将QFrame 和QWidget设置一样的大小,接下来向QFrame中拖入需要的控件,本例中由于只做提示,便只放了一个QLabel控件。
ui文件的对象类如下:
在这里插入图片描述

样式表

my.qss

/*提示工具*/
/*提示窗口的背景*/
QWidget#ToolTipForm
{background-color:transparent;
}/*提示窗口的frame*/
QWidget#ToolTipForm>QFrame#frame
{background-color:#aaff7f;border:none;border-radius:20px;
}/*标签*/
QFrame#frame>QLabel#label
{background-color:transparent;color:#ffffff;font:14px,"宋体";
}

样式表中设置了QWidget,QFrame,QLabel三个控件。这里有一个需要注意的:需要注意控件之间的父子关系。符号“>”代表直属子部件,说明两个控件之间是父子关系。“#”代表后面的字段是前面控件类型的名称,当然也可以省略控件类型直接写作#objectname这样,更多符号,这里不再记录。
qss文件编写完成之后,加入到项目的资源文件夹下,同样需要在创建资源文件的时候,添加前缀,然后再添加qss文件,保存。最后一步,在代码中将qss文件的内容加载进去。需要在main函数中编写,这样不管大的项目,都可通过一个qss文件加载整个项目的样式。这里不再提qss文件的加载,之前的qss相关介绍中有写,读者可以自行查阅。
这样还没有达到完全的圆角窗口,窗口存在圆角下面的黑色方角,最关键的一步:需要在该提示工具的窗口类的构造函数中加入窗口无标题栏和背景透明的设置。

setAttribute(Qt::WA_TranslucentBackground);//设置背景透明
setWindowFlags(Qt::WindowTransparentForInput | Qt::ToolTip | Qt::FramelessWindowHint);//窗口仅用于输出,不接收任何输入事件

上面只需setAttribute(Qt::WA_TranslucentBackground);和Qt::FramelessWindowHint的设置就好,作者的另两个参数是为了项目需要设置的不用加,便能实现想要的圆角窗口。
完整的代码如下:
tooltipform.h

#ifndef TOOLTIPFORM_H
#define TOOLTIPFORM_H#include <QWidget>/**********类功能描述:提示框***********/
namespace Ui {
class ToolTipForm;
}class ToolTipForm : public QWidget
{Q_OBJECTpublic:explicit ToolTipForm(QWidget *parent = nullptr);~ToolTipForm();void setToolTipInfo(QString &strTip);//设置窗口提示信息private:Ui::ToolTipForm *ui;
};#endif // TOOLTIPFORM_H

tooltipform.cpp

#include "tooltipform.h"
#include "ui_tooltipform.h"ToolTipForm::ToolTipForm(QWidget *parent) :QWidget(parent),ui(new Ui::ToolTipForm)
{ui->setupUi(this);//设置窗口为圆角必须设置背景透明和无边框setAttribute(Qt::WA_TranslucentBackground);//设置背景透明setWindowFlags(Qt::WindowTransparentForInput | Qt::ToolTip | Qt::FramelessWindowHint);//窗口仅用于输出,不接收任何输入事件
}ToolTipForm::~ToolTipForm()
{delete ui;
}void ToolTipForm::setToolTipInfo(QString &strTip)
{ui->label->setText(strTip);
}

上面代码中窗口属性的设置Qt::WindowTransparentForInput | Qt::ToolTip,只是项目需要,实现继承于QWidget的圆角窗口的时候,只需设置窗口无边框和背景透明:

setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::FramelessWindowHint);

要是没有setAttribute(Qt::WA_TranslucentBackground);设置窗口透明这句,便会出现下面的效果:
在这里插入图片描述
圆角窗口的圆角周围会出现黑色的直角。而设置窗口背景透明很好的解决了这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软 Build 2019:IE 重生,Azure 成主角;华为拟在英剑桥新建半导体研发基地,与ARM做邻居……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go阿联酋联邦政府人工智能部长 …

qt获取当前场景中的所有图形项的层次

提要 场景中有多个窗口&#xff0c;窗口处于不断更新中&#xff0c;获取场景中当前所有窗口的图层。由于特定的结构&#xff0c;这里场景中的窗口采用自定义窗口&#xff0c;将该自定义窗口作为自定义代理窗口的窗口&#xff0c;图形项作为自定义代理窗口的父窗口&#xff0c;…

MyBatisPlus_删除篇_入门试炼_04

文章目录1. 实战删除1. 实战删除 package com.gblfy.springboot.mybatisplus.mapper;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybati…

完美起点更重要:青立方超融合易捷版 助力企业一步云就绪

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;长跑&#xff0c;一项比短跑更具技术含量的运动&#xff0c;如果起跑过猛&#xff0c;…

MyBatis-Plus_查询进阶01

select语句中不列出全部字段 文章目录1. 形式12. 形式21. 形式1 /*** 1. 名字包含雨并且年齡小于40* sql&#xff1a;name like %雨% and age < 40*/Testpublic void selectByWrapperSupper() {QueryWrapper<User> queryWrapper new QueryWrapper<>(); // …

qt中处理精度丢失

提要 定义的qreal类型的变量在做减法和乘法时所得的值不正确。 示例 做减法运算 //参数定义 qreal m_lastScale;//上一次缩放比 qreal m_scale;//保存缩放比m_scale m_lastScale - 0.05;//变为减0.05后计算的值不对下面的方法可以解决精度丢失导致的计算所得的值不正确的问…

没有一家公司可以逃避边缘计算 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a; Ariane转自&#xff1a;边缘计算社区边缘计算正在为数据中心的世界添…

Qt实现浮动窗口

提要 在窗口上悬浮鼠标&#xff0c;此时窗口标题栏显示&#xff0c;窗口变大&#xff0c;鼠标移开后&#xff0c;窗口恢复原来的大小&#xff0c;标题栏隐藏。 示例 直接上代码&#xff0c;只包含只要的代码部分。 在自定义的窗口中重写鼠标进入事件enterEvent和鼠标离开事件…

gblfy_IDEA常用快捷键技巧

文章目录一、IDEA常用快捷键1. 查找2. 注释3. 断点调试4. 复制/移动5. 提示二、为需要的菜单设置快捷键2.1. 先搜2.2. 后加三、查找快捷键对应的菜单/替换快捷键3.1. 先搜3.2. 再加3.3. 需移除一、IDEA常用快捷键 1. 查找 查找快捷键说明idea中对应菜单位置CTRLR当前文件替换…

qt编写触摸事件的关键

提要 无论你的电脑是支持触摸屏&#xff0c;还是你通过usb外部连接触摸屏&#xff0c;都能验证你的触摸程序功能。下面说说程序中使用触摸按钮等。 示例 按钮可以实现触摸功能&#xff1b;自动义控件可以实现触摸按下拖动&#xff1b;触摸长按出现对话框&#xff08;也可以是…

MyBatis-Plus_查询进阶05

查询专栏&#xff1a;select语句中不列出全部字段 文章目录1. 第一种形式2. 第二种形式1. 第一种形式 通过queryWrapper调用select方法&#xff0c;在select方法中添加需要查询的列 /*** 1. 名字包含雨并且年齡小于40* sql&#xff1a;name like %雨% and age < 40*/Testp…

甲骨文中国裁员已定,补偿为N+6;VMware联手云平台合作伙伴AsiaPac,闪耀狮城;对标英伟达,寒武纪新货曝光……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 乐视改乐融&#xff0c;重新…

qt自定义窗口添加父窗口后,显示不出来

提要 继承于QDialog的类&#xff0c;在被其它类创建的改对象时&#xff0c;没设置父窗口前显示正常&#xff0c;设置了父窗口后显示不出来。 自定义窗口的构造函数 configBtnNameDialog::configBtnNameDialog(QWidget *parent) :QDialog(parent),ui(new Ui::configBtnNameDial…

MyBatis-Plus_Condition作用

查询专栏&#xff1a;MP默认查询原则 查询的是数据库列名非实体类属性 文章目录在测试类中新增一个私有方法 /*** 当点击查询按钮时,查询搜索框中默认为null,也支持传入条件*当传入的条件不为null或者不为空""时,会拼接在where 的后边当做条件* param name* param em…

5G精华问答 | 大数据和5G有什么关系?

戳蓝字“CSDN云计算”关注我们哦&#xff01;即将到来的5G&#xff0c;通过提升连接速率&#xff0c;提升了“人联网”的感知&#xff0c;也促进了人类主动创造数据。另一方面&#xff0c;它更多是为“物联网”服务的。包括低延时、海量终端连接等&#xff0c;都是物联网场景的…

qt中继承pushbutton自定义控件设置按钮样式

提要 继承QPushButton后的按钮&#xff0c;设置其样式。 实现 在自定义的控件类中添加Q_OBJECT宏 在自定义的控件的类中重写paintevent函数 自定义的控件在使用时&#xff0c;必须指明其父对象 使用样式表设置样式&#xff0c;将类名改为自定义的类名 例子 直接上代码 myB…

MyBatis-Plus_实体作为条件构造器构造方法的参数

查询专栏&#xff1a;MP默认查询原则 查询的是数据库列名非实体类属性。 实体作为条件构造器构造方法的参数 文章目录/*** 1.传递的参数如果是实体类* <p>* 注&#xff1a;这种情况传递过来的参数是等值的也就是* 如果不想等值&#xff0c;例如:like 条件* 在实体类中,需…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于概率预测与随机响应面法的新能源孤岛配电网实时风险评估与调控策略》

这个标题涉及到新能源孤岛配电网的实时风险评估与调控策略&#xff0c;其中使用了概率预测和随机响应面法。下面是对标题中各个要素的解读&#xff1a; 新能源孤岛配电网&#xff1a; 新能源&#xff1a; 指的是可再生能源&#xff0c;如太阳能、风能等&#xff0c;与传统的化石…

Open Infrastructure开启开放协作新时代

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;在丹佛举办的Open Infrastructure Summit大会的Keynote演讲中&#xff0c;OpenStack基…

Qt中绑定信号槽之后,信号槽无效

下面程序编译没有错误&#xff0c;运行却未达到想要的效果&#xff0c;最后调试发现&#xff0c;是信号槽绑定后无效&#xff0c;即槽函数没有受到信号的触发。具体代码如下&#xff1a; main.cpp #include <QtCore> #include "controller.h" #include "…