这3个基类从名字上看分别是 "微件"、"对话框"、"主窗口,

QWidget类是所有用户界面对象的基类,QMainWindow和QDialog都是QWidget的子类。窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围 菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工具条按钮时,槽会被调用。

QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模态对话框也可以是非模态对话框。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。

QDialog 是最普通的顶级窗口。一个不会被嵌入到父窗口部件的窗口部件叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。

如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。
    当然了,实际中,你还可以基于任何其他部件类来派生。看实际需求了,比如QFrame、QStackedWidget等等

PyQt5-QWidget、QDialog及QMainWindow的区别相关推荐

  1. QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

  2. Python3 PyQt5 窗口(国际化/QMainWindow/QWidget/QDialog)

    Python3 PyQt5 窗口(国际化/QMainWindow/QWidget/QDialog) 本文由 Luzhuo 编写,转发请保留该信息. 原文: https://blog.csdn.net/ ...

  3. PyQt5第一部分-窗口类:QWidget, QDeskWidget, QTabWidget, QMainWindow, QDialog

    0 前言 1 控件的几何数据 QRect,QPoint,QSize 1.1 方法列表 2 基本窗口 QWidget 2.1 方法列表 2.2 示例 第一个APP 3 桌面窗口 QDeskWidget ...

  4. [转载] - QWidget、QMainWindow、QDialog和QFrame的区别

    继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类. QW ...

  5. QWidget、QDialog、QMainWindow 的异同点

    简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口 - QWidget.QDialog.QMainWindow. QWidget继承于QObject和QPaintDevice,QDialog ...

  6. PyQt5学习记录(2)---QMainWindow菜单栏、状态栏和工具栏

    QMainWindow QMainWindow是继承自QWidget,提供一个应用程序的主窗口.通过QMainWindow你可以添加自己的QToolBars.QDockWidgets.QMenuBar ...

  7. pyqt5 qwidget 边框_实战PyQt5: 116-画刷类QBrush

    QBrush简介 QBrush类定义由QPainter绘制的形状的填充图案.一个画刷可以有颜色,填充图案,渐变和纹理属性. 样式填充使用Qt.BrushStyle枚举变量定义填充图案.默认的填充样式为 ...

  8. Pyqt5中addLayout和setLayout的区别

    有些控件或者布局有addLayout和addWidget的函数,但是有些就没有,比如QWidget这个控件就没有addLayout和addWidget这个函数,取而代之的是一个setLayout函数, ...

  9. Py之GUI之PyQt:PyQt5的简介、入门、安装(QtCreator和QtDesigner)图文教程之详细攻略

    Py之GUI之PyQt:PyQt5的简介.入门.安装(QtCreator和QtDesigner)图文教程之详细攻略 目录 PyQt的简介 1.Qt特点 2.QT中QT Widgets Applicat ...

最新文章

  1. 为office添加繁简体转换
  2. python动态网页开发教程_python django创建一个属于自己的动态网站
  3. myeclipse启动报JVM terminated. Exit code=1
  4. oracle00333,Oracle数据库REDO损坏ora-00333修复手札
  5. 递归和对面对象编程初步
  6. bzoj1191: [HNOI2006]超级英雄Hero
  7. 如何创建和配置SQL Server代理警报
  8. unity scence灯光不显示_Unity基础教程系列(四)——多场景(Loading Levels)
  9. 修炼!!!——超越项目经理
  10. python联系题1
  11. mysql数据库增删改操作不自动提交事务
  12. 路由模块router实现step1
  13. AX2012 R2安装
  14. 100套Java毕业设计和课程设计项目案例(包含项目源码)
  15. MyBatis 里面如何配置log4j
  16. 基于公众号扫码授权登录
  17. 片上总线Wishbone 学习(十)总线周期之单写读操作
  18. python面向对象编程
  19. Windows自定义右键菜单
  20. 笔记本电脑3C认证要求的相关介绍

热门文章

  1. 关于 websocket 的 连接
  2. 拍摄的多段视频怎么去掉声音?两种方法快速实现
  3. 【Linux学习笔记(十八)】之 压缩,打包 zip,gz, bz2, tar,tar.gz, tar.bz2
  4. 数据库和databus
  5. 杂谈_怎样写好英语字
  6. 双均线策略代码【利用聚宽平台】
  7. APP应用推广方式:25个常见的空手套白狼方法
  8. 学习PrintWriter类
  9. 计算机的CPU和GPU的区别,CPU 和 GPU 有什么区别
  10. 贾跃亭旗下FF去年第三季净亏3亿美元 暂时避免退市危机