当前位置: 首页 > news >正文

QT继承Widget对象如何绘制圆角矩形

绘制圆角矩形控件

  • QT继承Widget对象如何绘制圆角矩形
    • 主要代码
      • 主要逻辑
      • 代码部分
    • 运行结果

QT继承Widget对象如何绘制圆角矩形

有时候我们想用QT绘制一个对话框,或者菜单,这个菜单继承自Widget对象。我们想让这个对话框,或者菜单看起来更柔和,因此希望设计成圆角矩形,在这种情况下,直接使用qss的border-radius是行不通的,那我们应该怎么办呢?本文将会给你答案。

主要代码

主要逻辑

把整个Widget设置成背景透明,然后再缩小矩形绘制区域,绘制圆角矩形,然后正常在这个圆角矩形中添加控件,也可以方便的绘制阴影。

代码部分

//.h
#ifndef MYMENU_H
#define MYMENU_H#include "stdafx.h"
#include <QWidget>
#include <QPaintEvent>
#include <QPainter>
#include <QPainterPath>class MyMenu : public QWidget
{Q_OBJECTpublic:explicit MyMenu(QWidget* parent = nullptr);protected:void paintEvent(QPaintEvent* event) override;
};
#endif//.cpp
#include "stdafx.h"
#include "mymenu.h"MyMenu::MyMenu(QWidget* parent): QWidget(parent)
{// 设置固定大小setFixedSize(300, 200);// 去边框、设置背景透明setWindowFlags(Qt::FramelessWindowHint);setAttribute(Qt::WA_TranslucentBackground);//设置内容边距,缩小绘制区域为圆角矩形内this->setContentsMargins(10, 10, 10, 10);QLabel* label = new QLabel("Test", this);label->setStyleSheet("color: white;");label->move(100, 100);label->show();
}void MyMenu::paintEvent(QPaintEvent* event)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);  // 抗锯齿// 创建圆角矩形路径QPainterPath path;path.addRoundedRect(rect().adjusted(DpiStyle::dpiScaled(5), DpiStyle::dpiScaled(5), DpiStyle::dpiScaled(-5), DpiStyle::dpiScaled(-5)),DpiStyle::dpiScaled(10),DpiStyle::dpiScaled(10));// 设置红色填充QColor redColor(220, 20, 60); // 深红色,可自定义painter.fillPath(path, redColor);
}

运行结果

运行结果

相关文章:

  • Qt 自定义控件
  • 说说什么是幂等性?
  • 小事务架构下的业务完整性保障:基于业务处理记录与补偿机制的技术实现
  • 两类中断控制器处理流程_链式和层级
  • 深度大脑:AI大模型的设计与运行原理
  • Profibus DP转Modbus RTU网关配置秘籍
  • 云服务模式全知道:IaaS、PaaS、SaaS与DaaS深度解析
  • 【小白训练日记——2025/4/15】
  • Yakit history 数据包扫描
  • VMware Ubuntu挂载Windows机器的共享文件
  • YOLOv3源码解析:模型构建模块
  • 常见的爬虫算法
  • GIT工具学习【4】:推送到远程仓库
  • 训练神经网络的原理(前向传播、反向传播、优化、迭代)
  • 分享一个shell脚本
  • 大模型在胃十二指肠溃疡预测及治疗方案制定中的应用研究
  • L1-103 整数的持续性
  • 【TI MSPM0】ADC进阶学习
  • 家政小程序预约系统框架设计
  • 计算斐波那契数列
  • 细说汇率 ⑬ 美元进入“全是坏消息”阶段
  • 广州一男子早高峰爬上猎德大桥顶部疑似要跳桥,路段一度拥堵
  • 西湖大学本科新增临床医学专业,今年本科招生专业增至8个
  • 伊朗外长访华将会见哪些人?讨论哪些议题?外交部回应
  • 国务院国资委:推动央企强化资金统筹,确保及时付款
  • 习近平向加蓬当选总统恩圭马致贺电