一、 Qt 中窗口的基本概念
1、部件或窗口部件: Qt 把建立用户界面的元素称为窗口部件(widget),简称部件,比如:主
窗口、对话框、按钮、标签等在 Qt 中都称为部件。
2、窗口:没有嵌入到其他部件中的部件被称为窗口, 通常来说窗口是没有父部件的部件(也
可以有父部件),因此窗口又被称为顶级部件,与其相对的非窗口部件,称为子部件。 窗
口通常含有边框和标题栏(当然也可以没有这些)。窗口若有父部件,则在父级被删除时删
除。 QDialog 和 QMainWindow 部件,默认为窗口,即使在构造函数中为其指定父部件,
仍是窗口。 窗口通常会显示在任务栏上。
3、容器:放置其他部件的部件被称为容器,注意,容器可以嵌入到其他部件(即容器可以有
父部件),而窗口则不能。
#include<QtWidgets> /*添加此头文件会包含整个 QtWidgets 模块中的所有类。实际编写程序时像这样大
型的头文件应尽量包含可能少的数量,以加快程序的运行,本文作为讲解目的,
为了减少程序长度而使用了这种简便的方式。 */
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
//1、窗口 1, 创一个对话框部件 d。
QDialog d;
d.resize(333, 222);
//2、窗口 2, QWidget 类及其子类的构造函数都有 QWidget *parent =0;
//Qt::WindowFlags f=0 形参。 此处标志取值为 Qt::Window,则此时无论部件t 是否有父部件,都表示该部件是一个窗口
QLabel t(&d, Qt::Window);
//QLabel t1(); //注意:此语法不是使用默认构造函数创建 t1,而是在声明一个函数 t1
t.setText("AAA"); t.resize(111, 44); t.move(50, 50);
t.show(); //因为标签 t 现在是窗口,所以需要明确的显示
d.show();
//3、窗口 3, 默认情况下,按钮 b 没有指定父部件,因此按钮 b 是一个窗口,注意:
// QPushButton 没有参数类型为 Qt::WindowFlags 的构造函数,即无法为按钮设置标志
QPushButton b;
b.resize(222, 111); b.setText("BBB");
b.show();
//4、这里t2不是一个窗口,是在d内
QLabel t2(&d); //部件 t2 添加于在对话框 d 显示之后。
t2.setText("CCC"); t2.move(50, 50);
t2.show(); //因为 t2 在 d 显示之后添加的,所以必须明确的显示 t2,否则 t2 会不可见。
return a.exec();
}