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来处理临时性的交互。

相关推荐
华仔啊30 分钟前
为什么现代 Node 后端都选 NestJS + TypeScript?这组合真香了
javascript·后端
Joey_Chen34 分钟前
【Golang开发】快速入门Go——Go语言中的面向对象编程
后端·go
lookFlying37 分钟前
Python 项目 Docker 仓库发布指南
后端
易元37 分钟前
模式组合应用-组合模式
后端·设计模式
秋难降42 分钟前
从浅克隆到深克隆:原型模式如何解决对象创建的 “老大难”?😘
后端·设计模式·程序员
bobz9651 小时前
安装 nvidia 驱动之前要求关闭 secureBoot 么
后端
程序员的世界你不懂1 小时前
【Flask】测试平台开发实战-第一篇
后端·python·flask
bobz9651 小时前
dracut 是什么?
后端
自由的疯3 小时前
Java RuoYi整合Magic-Api详解
java·后端·架构
自由的疯3 小时前
Java 实现TXT文件上传并解析的Spring Boot应用
后端·架构