QT快速学习笔记——介绍窗体

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组件的方法和属性,那时我们就可以利用新学的知识再度美化一下界面了。

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha Code