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

相关推荐
QX_hao2 小时前
【Go】--反射(reflect)的使用
开发语言·后端·golang
小坏讲微服务2 小时前
Docker-compose 搭建Maven私服部署
java·spring boot·后端·docker·微服务·容器·maven
yuuki2332333 小时前
【数据结构】用顺序表实现通讯录
c语言·数据结构·后端
你的人类朋友3 小时前
【Node】手动归还主线程控制权:解决 Node.js 阻塞的一个思路
前端·后端·node.js
史不了4 小时前
静态交叉编译rust程序
开发语言·后端·rust
码事漫谈5 小时前
C++中的多态:动态多态与静态多态详解
后端
码事漫谈5 小时前
单链表反转:从基础到进阶的完整指南
后端
与遨游于天地5 小时前
Spring解决循环依赖实际就是用了个递归
java·后端·spring
Python私教6 小时前
用 FastAPI + Pydantic 打造“可验证、可热载、可覆盖”的配置中心
后端