「这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战」。
前言:
在Qt中,我们用到的最多的类就是QWidget,但是我们为什么要用它,为什么所有的部件的基类都是QWidget,下面做一下解释:
在Qt中,QWidget类是所有用户界面对象的基类(这是Qt框架设计的),被称为基础窗口部件。QWidget类又继承于QObject类,QObject类也是一个很重要的类,在开发过程中也经常用到。QObject和QPaintDevice类共同组成了QWidget类。
QWidget分别作为部件和子部件:
- 窗口部件(Widget)简称部件,是Qt中建立用户界面的主要元素。像主窗口(MainWindow)、对话框(Dialog)、标签(Label)、按钮(Button)、文本输入框(textEdit)等都是窗口部件。
Qt中把没有嵌入到其他部件中的部件成为窗口,一般窗口都有边框和标题栏。QMainWindow和大量的QDialog子类是最一般的窗口类型。窗口就是没有父部件的部件,所以又称为顶级部件(top-level widget)。
- 与其相对的是非窗口部件,又称为子部件(child widget)。在Qt中大部分部件被用作子部件,嵌入在别的窗口中。Qt中销毁父对象的时候会自动销毁子对象,所以在delete父部件的时候,会自动销毁作为widget的所有子部件。
QWidget的拓展:
QWidget提供了自我绘制和处理用户输入等基本功能,Qt提供的所有界面元素不是QWidget的子类就是与QWidget的子类相关联。要设计自己的窗口部件,可以继承自QWidget或者是它的子类。
QWidget的构造函数有两个参数:
- QWidget *parent = 0;
- Qt::WindowFlags f = 0; 前面的parent指的是父窗口部件的指针,默认值是0,表示没有父窗口。
后面的Qt::WindowFlags用来设置窗口属性,值为枚举类型。可以为单个类型枚举,也可以为多个类型枚举进行位或操作。如Qt::Widget(默认类型)、Qt::Dialog(对话框类型)、Qt::SplashScreen(欢迎窗口类型)、Qt::Dialog | Qt::FramlessWindowHint(没有边框的对话框)、Qt::SplashScreen | Qt::WindowStaysOnTopHint(停留在所有其他窗口上面的欢迎窗口)等。
QWidget的显示状态:
我们一般看到的QWidget显示出来就是默认的显示状态,其实它还有其他的显示状态。用QWidget::setWindowState()函数用来设置窗口的状态。
参数为:
- Qt::WindowMaximized(最大化)
- Qt::WindowMinimized(最小化)
- Qt::WindowFullScreen(全屏显示)
- Qt::WindowActive(活动窗口)。
- Qt::WindowNoState(正常状态,默认状态)等。
创建自定义控件时,要创建的控件也可以继承QWidget类。QWidget既可以是父窗口也可以是子窗口。
在之后的学习过程中还会对这部分知识做一些补充,如果有不同的见解可以写在评论中讨论一下。