Qt自定义一个圆角对话框

news/2024/10/18 20:29:17/

如何得到一个圆角对话框?

步骤:

1、继承自QDiaglog

2、去掉系统自带的边框

3、设置背景透明,不设置4个角会有多余的部分出现颜色

4、对话框内部添加1个QWidget,给这个widget设置圆角,并添加到布局中让他充满对话框

5、后续对话框的所有内容都添加在这个widget里面

6、模拟QMessageBox的静态方法,提供一个静态方法,调用这个静态方法可以直接显示一个圆角对话框

举例:

#ifndef ROUNDEDDIALOG_H
#define ROUNDEDDIALOG_H#include <QDialog>
#include<QHBoxLayout>
#include<QLabel>
#include<QPushButton>class RoundedDialog : public QDialog
{Q_OBJECTpublic://模拟QMessageBox的静态方法,调用这个静态方法可以直接显示一个圆角对话框static int roundedDialog(){RoundedDialog d;return d.exec();}RoundedDialog(QWidget *parent = nullptr) : QDialog(parent){resize(400,200);//1.去掉系统自带的边框setWindowFlag(Qt::FramelessWindowHint);//2.设置背景透明,不设置4个角会有颜色setAttribute(Qt::WA_TranslucentBackground);//内部添加1个QWidget,给这个widget设置圆角,并添加到布局中让他充满对话框QHBoxLayout* h_box=new QHBoxLayout(this);h_box->setSpacing(0);h_box->setContentsMargins(0,0,0,0);QWidget* w=new QWidget(this);w->setStyleSheet(".QWidget{border-radius:20px;background-color:green}");h_box->addWidget(w);//后续对话框的所有内容都添加在这个widget里面QLabel* label=new QLabel("你好,我要说拜拜啦!",w);label->setAlignment(Qt::AlignCenter);label->setStyleSheet(R"(font: 900 12pt "Arial Black";)");label->move(120,50);QPushButton* btn_close=new QPushButton("×",this);btn_close->setStyleSheet("border-radius:15px;font-size:18px;font-weight:bold;background-color:pink");btn_close->setGeometry(185,150,30,30);connect(btn_close,&QPushButton::clicked,this,&QDialog::accept);}~RoundedDialog()=default;
};
#endif // ROUNDEDDIALOG_H

 学习链接:https://github.com/0voice


http://www.ppmy.cn/news/1540080.html

相关文章

Word排版 | 如何文字部分固定行距、图片(嵌入型)单倍行距

问题描述 在写一个要求比较高的项目报告&#xff0c;总共有109页 89张图片&#xff0c;而且必须用word写 因此&#xff1a; 文字部分需要固定行距23磅图片部分需要单倍行距&#xff08;不然无法使用嵌入式&#xff09; 难点 文字和图片难以有效分离&#xff0c;无法分别设…

【Python数据可视化】利用Matplotlib绘制美丽图表!

【Python数据可视化】利用Matplotlib绘制美丽图表&#xff01; 数据可视化是数据分析过程中的重要步骤&#xff0c;它能直观地展示数据的趋势、分布和相关性&#xff0c;帮助我们做出明智的决策。在 Python 中&#xff0c;Matplotlib 是最常用的可视化库之一&#xff0c;它功能…

SpringBoot启动web项目的最少依赖

1、pom.xml 文件&#xff1a;启动web项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"htt…

学习笔记——交换——STP(生成树)简介

一、技术背景 1、生成树技术背景 交换机单线路组网&#xff0c;存在单点故障(上左图)&#xff0c;上行线路及设备都不具备冗余性&#xff0c;一旦链路或上行设备发生故障&#xff0c;业务将会中断。 为了使得网络更加健壮、更具有冗余性&#xff0c;将拓扑修改为(上右图)接入…

MySQL C/C++ 的 API

MySQL 提供了一个用于 C/C 的 API&#xff0c;称为 MySQL Connector/C。该 API 允许通过 C/C 程序与 MySQL 数据库进行交互。 函数名称参数返回值描述mysql_initMYSQL *mysqlMYSQL *初始化一个 MySQL 对象&#xff0c;用于连接 MySQL 服务器。mysql_real_connectMYSQL *mysql,…

Dockerfile + docker-compose 构建java镜像并运行服务

&#x1f3dd;️ 博主介绍 大家好&#xff0c;我是一个搬砖的农民工&#xff0c;很高兴认识大家 &#x1f60a; ~ &#x1f468;‍&#x1f393; 个人介绍&#xff1a;本人是一名后端Java开发工程师&#xff0c;坐标北京 ~ &#x1f389; 感谢关注 &#x1f4d6; 一起学习 &…

【Flutter】基础入门:项目结构

Flutter 是一款用于开发跨平台应用的优秀框架。通过一次编写代码&#xff0c;Flutter 可以将应用部署到 Android、iOS、Web、Windows、Linux 和 macOS 等多个平台。作为 Flutter 开发者&#xff0c;理解 Flutter 项目的目录结构和配置是至关重要的&#xff0c;能够帮助你快速构…

ANSYS Workbench三维Voronoi骨架网格结构

Voronoi 3D骨架结构是从Voronoi图中提取出的骨架部分&#xff0c;它代表了原始Voronoi图的主要连接路径。这种骨架可以被看作原始结构的一种简化表示&#xff0c;常用于描述多孔材料、生物组织如骨小梁结构等复杂形态的内部网络。 在工程和科学研究中&#xff0c;Voronoi骨架…