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
相关推荐
Chester_19997 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
EXI-小洲8 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员8 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导9 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan9 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
小灰灰搞电子9 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化9 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
m0_695251499 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
大衛說10 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
可乐鸡翅yeah_11 小时前
hls.js 内存泄漏实战排查,直播 M3U8 长时间播放异常定位方案
开发语言·javascript·python·django·ecmascript·m3u8·m3u8在线