QT 中的三种基本UI类型:Main Window | Widget | Dialog

QT designer 中的 main windows 和 widget 和diaglog ,这三种基本UI类型有什么区别?分别在什么场景下使用是最佳实践?

1. Main Window(主窗口)

  • 结构特点

    • Main Window是一个具有完整应用程序框架的窗口,它包含菜单栏(Menu Bar)、工具栏(Tool Bar)、状态栏(Status Bar),并且有一个中央部件区域(Central Widget)用于放置主要的内容,还可以有多个停靠部件(Dock Widget),可以停靠在主窗口的边缘位置。
    • 这种结构为复杂的应用程序提供了标准的布局方式,方便用户进行操作和导航。
  • 适用场景

    • 大型应用程序:比如办公软件、图形设计软件、集成开发环境(IDE)等。以办公软件为例,菜单栏可以放置文件操作、编辑、视图切换等功能选项,工具栏提供常用功能的快捷按钮,状态栏用于显示当前文档状态、光标位置等信息,中央部件区域则用于显示和编辑文档内容,停靠部件可以用来显示侧边栏,如样式设置、导航目录等。
    • 需要频繁进行文件操作和功能切换:因为菜单栏和工具栏能方便地组织和提供大量的功能入口。

2. Widget(部件)

  • 结构特点

    • Widget是最基本的 UI 元素,它可以是一个简单的按钮、标签,也可以是一个复杂的自定义容器。没有预定义的菜单栏、工具栏和状态栏等结构,非常灵活,开发者可以自由地在上面添加各种子部件,设计各种布局。
    • 它可以作为独立的窗口(设置为顶层窗口,即设置windowFlags属性),也可以作为其他容器(如Main WindowDialog)中的子部件。
  • 适用场景

    • 小型独立功能模块 :比如一个简单的计数器工具、一个自定义的绘图面板等。可以将这些功能集成到一个Widget中,方便复用。
    • 作为其他容器的子部件 :在Main Window的中央部件区域,或者在Dialog中,可以放置Widget来实现具体的业务逻辑,比如在对话框中放置一个包含多个输入框和标签的Widget,用于收集用户信息。

3. Dialog(对话框)

  • 结构特点

    • Dialog是一种用于与用户进行交互的临时窗口,它可以有按钮(如确定、取消按钮),用于用户进行选择或输入信息后进行确认操作。它通常没有菜单栏和工具栏,样式上更倾向于简洁的对话式设计。
    • Dialog分为模态对话框和非模态对话框。模态对话框在显示时会阻塞用户对其他窗口的操作,直到对话框关闭;非模态对话框则不会阻塞,用户可以在对话框显示时继续操作其他窗口。
  • 适用场景

    • 信息提示:比如显示警告信息(如文件保存失败提示)、错误信息(如用户名密码错误提示)、提示信息(如软件更新提示)等。

    • 用户输入:当需要用户输入一些信息时,如打开文件对话框让用户选择文件路径、保存文件对话框让用户指定文件名和保存路径,或者弹出一个对话框让用户输入用户名和密码进行登录等。

总之,在实际开发中,根据应用程序的功能需求和交互方式来选择合适的 UI 类型,通常大型应用以Main Window作为主框架,内部使用Widget来实现具体功能,用Dialog来处理临时性的交互。

相关推荐
Zane19941 分钟前
线上突然OOM,你的排查顺序是先看日志还是先重启
java·后端
西门老铁3 分钟前
UUID 还是雪花 ID?分布式唯一 ID 方案怎么选?
后端
吃饱了得干活4 分钟前
Java设计模式实战:一个支付模块的重构之旅,层层递进理解设计模式精髓
后端·设计模式·架构
江湖十年25 分钟前
Go 还是 Golang?可能你一直都搞错了!
后端·面试·go
计算机毕设定制辅导-无忧学长33 分钟前
《基于SpringBoot的庭院玫瑰栽培养护知识交互式科普平台设计与实现》
java·spring boot·后端·毕业设计·个性化推荐·协同过滤算法·庭院玫瑰栽培养护知识科普平台
骇客野人34 分钟前
SpringBoot数十Jar包批量生产部署落地实施方案(Shell+Systemd完整版)
spring boot·后端·jar
Json____1 小时前
从零构建家政服务平台:一套全栈架构如何打通管理端与移动端-java-springboot
java·spring boot·后端·架构·毕设·wwwoop.com
leeyi2 小时前
命令行里的平台:df_cli 都会什么(第108篇)
后端·aigc·agent
云雀衔光2 小时前
Java Spring AI MCP:在 Spring 里把 AI 接上你的业务系统
java·开发语言·人工智能·后端·测试工具·spring
苏渡苇2 小时前
Spring Insight 里如何对 Span 进行清洗
java·spring boot·后端·spring·系统监控