PyQt5中QMainWindow、QWidget与QDialog的区别及选择指南

一只小鹿
一只小鹿
发布时间:2026-10-13 | 3人浏览过
原创

本文详细解析PyQt5中QMainWindow、QWidget和QDialog三大核心窗体类的区别。QMainWindow提供完整的菜单、工具栏和状态栏支持,适合主应用;QWidget作为基类,灵活但需手动管理布局;QDialog用于对话框交互。通过对比功能层级与初始化代码示例,帮助开发者根据项目需求正确选择窗体类型。

在PyQt5图形界面开发中,正确理解QMainWindow、QWidget以及QDialog的区别并做出合理选择,是构建稳定应用的基础。

Qt界面模板分类

在使用Qt Designer进行界面设计时,第一步便是选择合适的界面模板,主要包含以下三类:

  1. Main Window
  2. Widget
  3. Dialog

三种模板的核心区别(基于官方文档)

QMainWindow详解

QMainWindow类专为构建带有菜单栏、停靠窗口(如工具栏)以及状态栏的主应用程序窗口而设计。

主窗口通常用于提供一个大的中央窗口部件(例如文本编辑器或绘图画布),并在其周围环绕菜单、工具条和一个状态条。QMainWindow常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。我们将简要地回顾一下有关添加菜单项和工具条按钮,然后描述QMainWindow自己的便捷。

QWidget详解

QWidget类是所有用户界面对象的基类。

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

QWidget有很多成员函数,但是它们中的一些有少量的直接功能:例如,QWidget有一个字体属性,但是它自己从来不用。有很多继承它的子类提供了实际的功能,比如QPushButton、QListBox和QTabDialog等等。

QDialog详解

QDialog是最普通的顶级窗口。

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

一个没有父窗口部件的窗口部件一直是顶级窗口部件。

如何根据需求选择QMainWindow、QWidget或QDialog

大致理解是:

QMainWindow是完整的窗体,在window上可以加入widget,适合于完整的项目,因为它封装了toolbar,statusbar,central widget,docking area。

QWidget是raw widget,widget也可以容纳其他的widget,但是注意setCentralWidget是只能由mainwindow类调用的。

QDialog派生自QWidget,是顶级窗口,功能也最基础。

所以功能上QMainWindow > QWidget > QDialog

在PyQt中初始化类的区别

QMainWindow


from test.py import Ui_MainWindow #通过pyuic产生的test.py中生成类
class mywindow(QMainWindow,Ui_MainWindow):
  def __init__(self,parent = None):
    super(mywindow,self).__init__(parent)
    self.setupUi(self)

QWidget


from test import Ui_Widget 
from PyQt5 import QtWidgets

class mywindow(QtWidgets.QWidget,Ui_Widget):
  def __init__(self,parent = None):
    super(mywindow,self).__init__(parent)
    self.setupUi(self)

本文主要分析介绍了python GUI库图形界面开发PyQt5中QMainWindow, QWidget以及QDialog的区别和怎样选择选择,更多关于python GUI库图形界面开发PyQt5开发请查看下面的相关链接

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表