提要

窗口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);设置窗口透明这句,便会出现下面的效果:

圆角窗口的圆角周围会出现黑色的直角。而设置窗口背景透明很好的解决了这个问题。

qt使用样式表设置窗口widget为圆角相关推荐

  1. qt样式表设置边框_QT样式表

    QT样式表 一.QT样式表简介 1.QT样式表简介 QSS的主要功能是使界面的表现与界面的元素分离,使得设计皮肤与界面控件分离的软件成为可能. QT样式表是允许用户定制widgets组件外观的强大机制 ...

  2. 怎样用html设置文档格式,Dreamweaver使用CSS样式表设置网页文本格式

    Dreamweaver使用CSS样式表设置网页文本格式 互联网   发布时间:2008-10-17 19:35:50   作者:佚名   我要评论 本文章介绍如何在 Dreamweaver 中使用层叠 ...

  3. html设置按钮样式表,如何使用样式表设置QToolButton的图标?

    我想使用样式表来设置QToolButton的图标,就像这样:如何使用样式表设置QToolButton的图标? #include #include QString FormStyleSheetStrin ...

  4. ASP.net 母版页 外观设置/样式表设置

    一.说明 此文是小白在学习张晨光老师的视频教学<<Asp.Net WEB服务器编程技术>>中做的学习笔记,一些知识点也是跟着教程走的,大家也可以去老师的主页去学习. 二.外观设 ...

  5. qt样式表设置边框_qt 怎么为外围的widget添加边框?

    展开全部 方法如下:e68a843231313335323631343130323136353331333365633864设置外围widget的样式:border QWidget *widgetMa ...

  6. 【Qt】qss样式表之:QCalendarWidget,日历窗口样式表设置

    1.效果图: 2.qss样式表 其中表头的背景颜色等设置不起作用,只好在下面的代码中实现. /*日历*/ QCalendarWidget QHeaderView {qproperty-minimumS ...

  7. Qt:63---QStyle类设置窗口样式(QStyleFactory、QApplication)

    一.什么是QStyle Qt是一个跨平台的类库,相同的界面组件在不同的操作系统上显示效果是不一样的 QStyle是封装了GUI界面组件外观的抽象类,Qt定义了QStyle类的一些子类,应用于不同的操作 ...

  8. 【Qt】QWidget对样式表设置边框无效的解决方法

    1.现象 在对QWidget使用样式表时无效 QWidget#MyWgt{border:1px solid gray; } 2.原因 原因是QWidget只支持background.backgroun ...

  9. 用于设定表格样式的附加css,Dreamweaver使用CSS样式表设置网页文本格式

    核心提示:本文章介绍如何在 Dreamweaver 中使用层叠样式表 (CSS) 设置页面中的文本格式.您可以使用 CSS 以 HTML 无法提供的方式来设置文本格式和定位文本,从而能更加灵活自如地控 ...

最新文章

  1. Docker | Docker技术基础梳理(五) - Docker网络管理
  2. c语言知识重温及深入
  3. SAP系统配置常用命令大全
  4. django如何给上传的图片重命名(给上传文件重命名)
  5. 腾讯的迷你门户首页新闻用到的Silverlight技术引用
  6. Java正則表達式詳解
  7. [NOI2021 day1]轻重边(树链剖分),路径交点(矩阵行列式)
  8. fprintf函数的用法matlab_极力推荐这个Matlab教程
  9. QT Openssl no OPENSSL_Applink 解决
  10. 3.5 訪问者模式(5.11)
  11. 机器人瓦力机械舞_25个与机器人有关的“前卫”知识,你知道几个?
  12. Hiberate CRUD操作
  13. 2018年区块链将如何发展?
  14. 猴子都能看懂的A星算法原理
  15. asp.net mvc excel合并单元格_如何用Excel制作一份A4纸可直接打印的拼音田字格模版?...
  16. QTextEdit 富文本格式清除
  17. Qt - 跨平台程序打包发布
  18. 计算机不能关机处理方法,电脑不能关机怎么回事 电脑不能关机处理方法讲解...
  19. 利用Matplotlib绘制各类图表
  20. 淘宝自动回复机器人配置手册——目前2018年淘宝主流自动回复软件一览

热门文章

  1. 重新认识访问者模式:从实践到本质
  2. Flink 双流 Join 的3种操作示例
  3. Tablestore入门手册-UpdateRow接口详解
  4. AI又破案!衢州城市大脑这回抓了一个抢劫犯
  5. 如何在阿里云上构建一个合适的Kubernetes集群
  6. 面试中遇到这 3 个SQL问题,最容易掉坑里!
  7. 微电台│Get产品信息管理指南,和客户谈一场全渠道恋爱!
  8. Spark精华问答 | Spark 会替代Hadoop 吗?
  9. 混合云异军突起 英特尔的全“芯”体验为企业保驾护航
  10. java上传大文件_Java超大文件上传解决办法