首页 > 其他分享 >Qt实现QWidgets窗口圆角效果

Qt实现QWidgets窗口圆角效果

时间:2023-09-09 14:44:30浏览次数:44  
标签:遮罩 圆角 Qt QWidgets PainterPath QWidget QPainter

对于Qt里其它多数控件,我们可以直接通过设置qss border-radius: ?px;的方式来实现圆角。

而我们最常用的窗口QWidget的qss却并不支持这一属性。

StackOverFlow上的大佬@hank则给出了一种使用QPainter和遮罩的解决方式:

首先#include <QPainterPath>,然后构造你的QWidget。在下文中我用this指它。
很多时候想必您需要给它设置Qt::FramelessWindowHint的WindowFlags让它更美观。

QPainterPath PainterPath;	//绘制一个QPainter路径对象
PainterPath.addRoundedRect(this->rect(), 10, 10);	//对它设置路径为四周圆角。10即圆角的深度,可以修改
QRegion mask = QRegion(PainterPath.toFillPolygon().toPolygon());	//创建遮罩对象,内容即该QPainter路径
this->setMask(mask);	//为QWidget覆盖上这个遮罩

最终效果:
image

标签:遮罩,圆角,Qt,QWidgets,PainterPath,QWidget,QPainter
From: https://www.cnblogs.com/izwb003/p/qt_rounded_corner.html

相关文章

  • QTablewidget的使用 读写与遍历
    QTableWidget表格中的数据读写操作//读数据QStringstr=ui->TableWidget->item(row,column)->text();//取出字符串//item的参数row,column是行和列,都是从0开始,注意不要越界。intnum=str.toInt();//如果需要的是整型数,可以转成int//写数据ui->TableWidget->item(row,col......
  • 使用QT QPainter画一面彩色墙
    使用QTQPainter画一面彩色墙效果定义一个颜色表staticconstQRgbcolorTable[8]={0xFFA500,0xCC6666,0x66CC66,0x6666CC,0xCCCC66,0xCC66CC,0x66CCCC,0xDAAA00};定义砖块宽度高度private:Ui::RainbowWidget*ui;enum{BrickWidth=80,B......
  • C++系列三:QT-Quick
    目录前言:理论:案例:前言:其实和我接触过的Flutter,有异曲同工之处。记住F1,其实就ok了。参考链接:官方、教程1、教程2、教程3、教程3理论:案例://main.cpp:QQmlApplicationEngineengine;engine.load(QUrl(QStringLiteral("qrc:/qt/qml/qtquickapplication1/main.qml")));if(e......
  • qt 有必要记录的
    []这个表示Lambda的开始,如果要加参数可以这样:[]()后面括号里面放参数,Qt中connect中的信号,参数1.[]:里面为空,表示不使用任何参数对象的参数;2.=:表示按值的方式进行传递;3.&:表示以引用的方式进行传递;4.this:表示函数体内可以使用Lambda所在类中的成员变量;5.a:按值的方式进行传......
  • VS_vsaddin_QT联合编辑
    VS_vsaddin_QT联合编辑主要包含了使用VS2019,QT_VS_tools插件3.0.0和QT5.15.2联合编辑时,出现的一些问题。QtCreator和VS联合编辑,中文乱码的问题联合编辑时中文乱码Qt中添加VTK窗口显示点云......
  • Qt中添加VTK窗口显示点云
    Qt中添加VTK窗口显示点云1.在Qt中添加显示点云的控件2.QVTKOpenGLNativeWidget.h的解释3.VTK文档及使用例程VTK总文档入口VTK的C++接口文档VTK的c++使用例程遇到的问题......
  • Qt中QGraphics类坐标映射关系详解
    1、Item(图元)坐标:属于局部坐标,通常以图元中心为原点(中心对称),非中心对称类,比如dialog类,一般以左上角为原点,正方向x朝右,y朝下。2、setPos的坐标是父类坐标系的坐标,一般对于item位于scene中的应用场景。3、scene(场景)坐标:属于逻辑坐标logicalcoordinates(与QPainter相同),以场......
  • Qt 图形视图框架<三>——<坐标系统>
    Qt图形视图框架<三>——<坐标系统> 一基础知识 图形视图框架是基于笛卡尔坐标系统的,一个图形项在场景中的位置和几何形状由x坐标和y坐标来表示。当使用一个没有变换的视图来观察场景时,场景中的一个单元代表屏幕上的一个像素。图形视图框架的三个坐标系分别是视图......
  • Qt5.9 Graphics View 最简单制作画图
    话不多说先看程序的效果图: 这个也算是一个基础的制作,下面带大家来看看如合制作吧。首先,从QGraphicsView类继承定义一个图形视图类QWGraphicsView。qwgraphicsview.h#ifndefQWGRAPHICSVIEW_H#defineQWGRAPHICSVIEW_H #include<QObject>#include<QGraphicsView>/......
  • Qt QListView添加数据
    QListView添加数据准备数据QStringListlist;list<<"数据1"<<"数据2";准备模型QStringListModel*model;model=newQStringListModel(this);将数据添加到模型中model->setStringList(list);为QListView添加数据模型ui->listView->setMode......