区别
QFrame 继承自 QWidget,是 QWidget 的 “增强版容器”,核心差异在于:
| 特性 | QWidget | QFrame |
|---|---|---|
| 边框支持 | 仅能通过 StyleSheet 简单设置 | 内置 frameStyle 属性,支持多种边框类型 |
| 背景与阴影 | 需手动编写复杂 StyleSheet | 支持 setBackgroundRole、setShadowEffect 等便捷方法 |
| 布局兼容性 | 支持,但无视觉分组能力 | 支持,且可通过样式实现控件分组可视化 |
| 核心用途 | 基础容器、自定义控件基类 | 界面分区、控件分组、视觉装饰 |
例子
QWidget
没有边框
QFrame
有边框
应用场景
QFrame和QWidget 场景
控件分组:将相关控件(如登录表单的 “账号 + 密码”)包裹在
QFrame中,通过边框 / 背景区分区域;界面分区:在复杂界面中用
QFrame划分功能模块(如左侧导航区、中间内容区、右侧信息区);
QFrame 场景
视觉装饰:作为分隔线、卡片容器或带阴影的面板,提升界面美观度;
自定义控件基类:基于
QFrame扩展带边框 / 背景的自定义控件(如进度条、仪表盘)。

