qt-6不同窗口使用方法和差别详解

Qt Designer 新建窗体模板与窗口部件详解

一、templates\forms(顶层窗口模板)

这些是可独立显示的顶层窗口,直接作为程序的主窗口或弹窗使用。

1. Dialog with Buttons Bottom
  • 作用:底部带标准按钮的对话框
  • 典型场景:确认 / 取消类弹窗(如 "是否保存"、"设置确认")
  • 自带控件 :底部预布局了 OK/Cancel 等标准按钮,按钮区域使用 QDialogButtonBox 管理,符合系统交互规范
  • 特点:模态弹窗为主,适合需要用户明确操作后才能回到主界面的场景
2. Dialog with Buttons Right
  • 作用:右侧带标准按钮的对话框
  • 典型场景:配置类弹窗(如选项设置、参数配置),右侧按钮更符合部分工具的布局习惯
  • 自带控件 :右侧预布局 OK/Cancel 按钮,其他区域留给自定义内容
  • 特点:和底部按钮版功能一致,仅按钮位置不同,视觉上更适合宽窗口
3. Dialog without Buttons
  • 作用:无默认按钮的空白对话框
  • 典型场景:复杂弹窗(如你截图里的硬件配置、TSMaster 这类多控件配置界面)
  • 自带控件 :纯空白 QDialog,需要自己拖拽按钮、分组框等所有控件
  • 特点:自由度最高,适合需要完全自定义布局的弹窗
4. Main Window
  • 作用:应用程序主窗口模板
  • 典型场景 :程序的主界面(你的 main_window.ui 就是这个类型)
  • 自带控件:内置菜单栏、工具栏、状态栏、中心部件区域,完整支持桌面应用的窗口结构
  • 特点:唯一支持菜单栏 / 工具栏 / 状态栏的模板,是构建完整应用的首选

也就是可以直接设置主菜单,主菜单下可以分为子菜单

5. Widget
  • 作用:基础空白部件窗口
  • 典型场景
    • 可作为独立窗口(比 Dialog 更轻量)
    • 作为其他布局的容器部件(嵌入到主窗口或其他弹窗中)
  • 自带控件 :纯空白 QWidget,无任何预定义结构
  • 特点:最基础的容器,灵活性最强,但需要自己实现所有窗口功能

二、窗口部件(可嵌入的子控件 / 容器)

这些是不能独立作为顶层窗口 的部件,需要嵌入到 Main Window/Dialog/Widget 中使用,用于实现复杂布局。

1. QDockWidget
  • 作用:可停靠 / 浮动的面板
  • 典型场景:IDE 的侧边栏、工具栏、调试面板(如 VS Code 的侧边栏、Qt Creator 的属性面板)
  • 特点:可拖动到主窗口边缘停靠,也可浮动为独立窗口,支持折叠 / 展开
  • 使用必须嵌入到 QMainWindow
2. QFrame
  • 作用:带边框的基础容器
  • 典型场景:作为分组容器、分隔线、装饰性边框
  • 特点:可设置不同边框样式(凸起、凹陷、纯线条),轻量且无内置布局
  • 使用:作为其他控件的父容器,用于视觉分组
3. QGroupBox
  • 作用:带标题的分组框
  • 典型场景:配置界面的功能分组(如你截图里的「CAN 控制器」「仲裁」「数据」分组)
  • 特点:自带标题栏,可设置是否可勾选启用 / 禁用内部控件,视觉上清晰划分功能区域
  • 使用:包裹一组相关控件,是上位机配置界面最常用的容器
4. QScrollArea
  • 作用:带滚动条的容器
  • 典型场景:内容过多超出窗口显示范围时(如长列表、多配置项)
  • 特点:自动显示水平 / 垂直滚动条,保证小窗口也能浏览完整内容
  • 使用 :内部包裹一个子部件(如 QWidget),子部件尺寸超出时自动滚动
5. QMdiArea
  • 作用:多文档界面(MDI)容器
  • 典型场景:多窗口编辑器(如 Photoshop、CAD 的多文档标签 / 窗口)
  • 特点:支持在主窗口内打开多个子窗口,可平铺 / 层叠 / 最小化
  • 使用:仅适用于需要多文档管理的复杂应用
6. QTabWidget
  • 作用:标签页容器
  • 典型场景:多页配置界面(如浏览器标签、设置面板的「常规 / 高级 / 网络」分页)
  • 特点:通过标签切换不同页面,节省空间,结构清晰
  • 使用 :每个标签对应一个 QWidget 页面,适合分类展示大量内容
7. QToolBox
  • 作用:折叠式面板容器
  • 典型场景:侧边栏折叠菜单(如 QQ 面板、PS 的工具面板)
  • 特点:可展开 / 折叠的分组,同一时间只显示一个分组内容
  • 使用:适合层级较少、需要垂直空间的侧边导航
8. QStackedWidget
  • 作用:堆叠式页面容器
  • 典型场景:向导流程、步骤式配置(如安装向导、设置向导)
  • 特点:多个页面堆叠在一起,同一时间只显示一个页面,通过代码切换
  • 使用:配合按钮 / 菜单实现页面切换,隐藏的页面不占用显示空间
9. QWizard
  • 作用:向导对话框模板
  • 典型场景:分步引导流程(如软件安装向导、设备配置向导)
  • 特点:内置「上一步 / 下一步 / 完成」按钮,自动管理页面跳转逻辑
  • 使用 :配合 QWizardPage 实现多步骤引导
10. QWizardPage
  • 作用:向导的单个页面
  • 典型场景 :作为 QWizard 的子页面,承载每一步的内容
  • 特点:可设置页面标题、子标题,支持页面间数据传递
  • 使用 :必须嵌入到 QWizard 中,不能独立使用

🎯 选型建议(结合你的上位机场景)

表格

需求场景 推荐模板
程序主界面(带菜单栏 / 工具栏) Main Window
硬件配置 / 参数设置弹窗 Dialog without Buttons
确认 / 提示类简单弹窗 Dialog with Buttons Bottom
多页配置 / 分类设置 QTabWidget + QGroupBox
长列表 / 超多配置项 QScrollArea + QGroupBox
侧边导航 / 折叠面板 QToolBoxQDockWidget
相关推荐
Wenweno0o18 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
chenjingming66618 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
cch891818 小时前
Python主流框架全解析
开发语言·python
不爱吃炸鸡柳18 小时前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
十五年专注C++开发19 小时前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
Momentary_SixthSense19 小时前
设计模式之工厂模式
java·开发语言·设计模式
‎ദ്ദിᵔ.˛.ᵔ₎19 小时前
STL 栈 队列
开发语言·c++
勿忘,瞬间19 小时前
数据结构—顺序表
java·开发语言
张張40819 小时前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_4235339919 小时前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python