【PySide6】Qt 实战-串口调试助手-初步认识窗体(2)

Qt 中,常用的三种窗体是:QMainWindow, QWidget, QDialog,本文简单介绍一下这三种窗体的区别及 QApplication 的作用。

QApplication

QApplicationQt 框架中的一个类,负责管理应用程序的事件处理等。

一个 QApplication 对象被创建时,将会初始化 Qt 库,并设置一些应用程序的全局属性。例如,应用程序的名称、图标、默认字体等。

在创建 QApplication 对象后,通过调用 exec() 函数启动事件循环

事件循环负责处理各种事件(如鼠标点击、键盘输入等),并将其发送给相应的窗口部件(即所谓的 Widget)进行处理。

除了处理事件外,QApplication 还提供其他功能,如国际化支持、命令行参数解析等。

具体的使用方式见下文窗体示例。

QMainWindow

使用 QApplication 建立一个 Qt 应用程序,QMainWindow 建立一个图形界面,并设置窗体的标题为 QMainWindow,运行后显示窗体如下:

from PySide6.QtWidgets import (QApplication, QMainWindow)


if __name__ == '__main__'
    app = QApplication()
  
    mainwindow = QMainWindow()
    mainwindow.setWindowTitle("QMainWindow")
    mainwindow.show()

	app.exec()

在这里插入图片描述

这样我们就显示了一个基本的窗体,窗体包含以下几部分:

  1. 标题栏
    1. 窗体logo
    2. 窗体标题(title)
    3. 窗体控制按钮(最小化、最大化、关闭)
  2. 主窗体

窗体中什么都没有,我们后续会逐步添加。

QDialog

通过一下代码建立一个 QDialog 窗体,Dialog 中文应该称之为对话框,界面与 QMainWindow 基本类似。

from PySide6.QtWidgets import (QApplication, QDialog)  
  
  
if __name__ == '__main__':  
    app = QApplication()  
  
    dialog = QDialog()  
    dialog.setWindowTitle("QDialog")  
    dialog.show()  
  
    app.exec()

在这里插入图片描述

QWidget

除了以上两种窗体外,还可以直接使用 QWidget 显示窗体,Widget 意为控件,但也可以直接显示为一个窗体。

from PySide6.QtWidgets import (QApplication, QWidget)  
  
  
if __name__ == '__main__':  
    app = QApplication()  
  
    widget = QWidget()  
    widget.setWindowTitle("QWidget")  
    widget.show()  
  
    app.exec()

在这里插入图片描述

区别与总结

为什么会有这么多种窗体?

程序上的设计一定有原因,任何程序的设计都要为了使用更方便,而不能为了设计而设计。

观察 QMainWindowQDialog 的源码,我们发现这两个类其实都基于 QWidget 继承而来,而 QWidget 则继承自 QObjectQPaintDevice

class QMainWindow(PySide6.QtWidgets.QWidget):
	...

class QDialog(PySide6.QtWidgets.QWidget):
	...

class QWidget(__PySide6_QtCore.QObject, __PySide6_QtGui.QPaintDevice):
	...

因此,这三个窗体的关系其实是这样的,QMainWindowQDialog 是基于 QWidget 来设计、添加、修改某些功能实现的,为了不同的使用需求。

比如作为主窗体的 QMainWindow 就添加了顶部的菜单栏和底部的状态栏,可能暂时没有显示,但实际上存在对应的控件。

而作为对话框的 QDialog,就精简了很多功能,比如不需要最大化和最小化,因为只需要弹出对话框告知用户某些信息,或者让用户点击一个 或者 等等。

QWidget 可以作为单独的窗体显示,也可以作为控件嵌入到某个窗体、甚至某个控件内部,以设计更复杂的界面。

同理,我们可以基于 QWidget 设计一个我们自己的窗体,比如默认包含一个按钮的窗体等。

QWidget
标题栏
主窗体
QMainWindow
标题栏
主窗体
+菜单栏
+状态栏
QDialog
标题栏
主窗体
-最小化
-最大化
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值