PyQt5基础窗口部件QWidget
1. QWidget 简介
QWidget类是所有用户界面对象的基类,被称为基础窗口部件。QWidget类继承自QObject类和QPaintDevice类,其中
- QObject类是所有支持QT对象模型的对象的基类
- QPaintDevice类是所有可以绘制的对象的基类
这些类都位于QtWidgets模块类,注意,QtWidgets是模块,QWidget是类,两个名称不一样。
2. 窗口、子部件以及窗口类型
2.1 QT中窗口的基本概念
- 部件或窗口部件:
Qt 把建立用户界面的元素称为窗口部件(widget),简称部件,比如:主
窗口、对话框、按钮、标签等在 Qt 中都称为部件。 - 窗口:
没有嵌入到其他部件中的部件被称为窗口, 通常来说窗口是没有父部件的部件(也
可以有父部件),因此窗口又被称为顶级部件,与其相对的非窗口部件,称为子部件。 窗
口通常含有边框和标题栏(当然也可以没有这些)。窗口若有父部件,则在父级被删除时删
除。 QDialog 和 QMainWindow 部件,默认为窗口,即使在构造函数中为其指定父部件,
仍是窗口。 窗口通常会显示在任务栏上。 - 容器:
放置其他部件的部件被称为容器,注意,容器可以嵌入到其他部件(即容器可以有
父部件),而窗口则不能。 - 窗口和窗口部件在 Qt 中是两个不同的概念,为避免引起混乱,以后把窗口部件统称为部
件。 - 若一个部件是另一个部件的父对象,则子部件的边界会完全的位于父部件的边界内部。
- Qt 中大部分部件都是用作子部件的,比如标签、按钮等。经常被用作窗口的部件是
QMainWindow 和 QDialog 的各个子类
2.2 窗口的组成
窗口的基本组成见下图所示:
2.3 窗口类型
窗口一般都是有边框和标题栏的,但其实这也并不一定是必需的。QWidget的构造函数有两个参数:
- QWidget *parent = 0
- Qt::WindowFlags f = 0
parent指父窗口部件,默认值为0,表明没有父窗口。
f是Qt::WindowType枚举类型的值或组合。Qt::WindowType类型用来为部件指定各种窗口系统属性,比如f=0表明窗口类型的值为Qt::Widget, 这是QWidget的默认类型,这种类型的部件如果有父窗口,那么它就是子部件,否则就是独立窗口。
3. 窗口的几何布局
对于一个窗口,往往要设置它的大小和运行时出现的位置,这就是我们要说的窗口的几何布局。假设我们有一个Widget,包含了一个子部件label,那么widget默认的大小就是它所包含的label的大小,而widget和label出现在窗口上的位置是不确定的。
对于窗口的大小和位置,根据是否包含边框和标题栏两种情况,要用不同的函数来获取。
Qt 对窗口位置和大小进行描述的属性见下图:
这里的函数分为两类,一类是包含框架的,一类是不包含框架的:
- 包含框架:x(), y(), frameGeometry(), pos(), move()等函数
- 不包含框架: geometry(), width(), height(), rect(), size()等函数