QT中的窗体
在上一节中,我允诺会在本节介绍一个空白组件来作为窗体的“衬底”,也就是所有其他组件的父组件。
这个空白的组件的名字是QWidget,我不知道上一节中我贴出来的QT中类的结构简图你有没有仔细看。假如仔细看过应该会记得QPushButton以及其他所有的可视的窗体组件都是继承自QWidget的。
这应该很好理解,QWidget是所有可视组件的基类,拥有一个组件的基本属性——可以设置尺寸、设置标题、设置是否允许最大化及最小化等。
是不是被我说晕了?潜意识里认定明明只有窗体才拥有标题以及最大最小化这些按钮,为什么组件也可以?
这是因为在QT中其实并没有严格意义上的“窗体”,前面两节中咱们运行的程序展现出的窗体实际上都是组件本身——当一个不存在父组件的组件被调用show方法时,他就会显示出窗体的外边框。
下图是上一节中编写的程序,他的窗体外边框(标红部分)来自不存在父组件的button1对象,而button2对象的父组件是button1,所以button2的窗体外边框被隐藏了。

简而言之,QWidget拥有一个组件的基本能力,同时他默认不显示任何内容也不提供任何功能。
虽然QT中没有专门作为窗体的东西,但我们完全可以把QWidget这个组件当成纯粹的窗体来使用。
改进上一节的程序
非常简单,我们只需要把button1对象换成一个来自QWidget类的对象就好啦!
#include <QApplication> #include <QPushButton> #include <QWidget> // 引入QWidget组件 int main(int argc, char *argv[]) { QApplication a(argc, argv); // 实例化一个QWidget对象window QWidget *window = new QWidget(); // 注意这里将button2的父组件修改为window QPushButton *button2 = new QPushButton("Hi", window); // 这里修改要显示的组件为window window->show(); return a.exec(); }
运行程序

还是很简陋,但是比上一节中那个两个按钮叠罗汉的程序可是好多了哈~
下一节中我将介绍QT组件的方法和属性,那时我们就可以利用新学的知识再度美化一下界面了。