第四章-窗口组件和窗口类型
一、窗口组件
图形用户界面由不同的窗口和窗口组件构成,<QtGui>
头文件包含窗口组件,对应QT中的GUI模块,QT以组件对象的方式构建GUI。
组件的类型:
A、容器类(父组件)用来包含其他的界面组件;
B、功能类(子组件)用于实现特定的交互功能。
QT中没有父组件的顶级组件叫窗口。
QWidget
是容器组件,继承自QObject
类和QPaintDevice
类,QObject
类是所有支持QT对象模型的基类,QPaintDevice
类是QT中所有可绘制组件的基类。
-
QWidget
组件QWidget
能够绘制自己和处理用户输入,是QT中所有窗口组件类的父类,是所有窗口组件的抽象,每个窗口组件都是一个QWidget
,QWidget
类对象常用作父组件或顶级组件使用。 -
QLabel
组件QLabel
组件用于显示一个提示性字符串,是功能性组件,一般需要父组件作为容器,QLabel
作为窗口存在没有实际意义。
继承自QWidget的类:
-
二、窗口类型
QT中可以根据需要定制窗口样式,不同的窗口类型可以使窗口具有不同的样式特性。
窗口类型:
Qt::Widget | Qt::Window | Qt::Dialog |
Qt::Sheet | Qt::Drawer | Qt::Popup |
Qt::Tool | Qt::ToolTip | Qt::SplashScreen |
Qt::Desktop | Qt::SubWindow |
窗口标识:Qt::WindowStaysOnTopHint
-
三、坐标系统
QT中的坐标系统以左上角为原点,水平为x轴,从左向右为正向,垂直为y轴,从上到下为正向。
1、窗口部件的定位
GUI程序在坐标系统中进行窗口和部件的定位,定位类型分为:
A、顶级窗口部件的定位 B、窗口内部件的定位 C、窗口部件的大小设置
QT使用统一的坐标系统定位窗口部件的位置和大小
QT部件类提供成员函数在坐标系统中进行定位
QWidget类提供了窗口部件所需的坐标系统成员函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mG8REBhF-1651161278497)(https://secure2.wostatic.cn/static/dP5U2otJvo6Wk6z6q1GBny/image.png)] `intx() const;` `inty() const;` `int width() const;` `int height() const;` 以窗口左上角为坐标系原点,但width()和height()分别为客户区的宽和高 `const QRect &geometry() const;` `intx() const;` `inty() const;` `int width() const;` `int height() const;` 以客户区左上角为坐标系原点,width()和height()分别为客户区的宽和高 `QRectframeGeometry() const;` `intx() const;` `inty() const;` `int width() const;` `int height() const;` 以窗口左上角为坐标系原点,width()和height()分别为窗口的宽和高 使用实例:
#include <QtGui/QApplication>
#include "Widget.h"
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w(NULL,Qt::Window|Qt::WindowSystemMenuHint);
w.setWindowTitle("HelloWorld");
w.show();
qDebug() << w.x();
qDebug() << w.y();
qDebug() << w.width();
qDebug() << w.height();
qDebug() << w.geometry().x();
qDebug() << w.geometry().y();
qDebug() << w.geometry().width();
qDebug() << w.geometry().height();
qDebug() << w.frameGeometry().x();
qDebug() << w.frameGeometry().y();
qDebug() << w.frameGeometry().width();
qDebug() << w.frameGeometry().height();
return a.exec();
}
geometry()、frameGeometry()函数需要在show()函数后调用。QT平台在窗口显示出来之前无法确定窗口的大小。
2、窗口部件的设置
QWidget类提供了设置窗口部件大小的成员函数
A、改变窗口部件的大小
void resize(const QSize &);
void resize(int w, int h);
B、改变窗口部件的位置
void move(int x, int y);
void move(const QPoint &);