QT开发(五)——窗口组件和窗口类型

一、窗口组件

图形用户界面由不同的窗口和窗口组件构成,<QtGui>头文件包含窗口组件,对应QT中的GUI模块,QT以组件对象的方式构建GUI。

组件的类型:

A、容器类(父组件)用来包含其他的界面组件

B、功能类(子组件)用于实现特定的交互功能

QT中没有父组件的顶级组件叫窗口。

QWidget是容器组件,继承自QObject类和QPaintDevice类,QObject类是所有支持QT对象模型的基类,QPaintDevice类是QT中所有可绘制组件的基类。

QWidget组件

QWidget能够绘制自己和处理用户输入,是QT中所有窗口组件类的父类,是所有窗口组件的抽象,每个窗口组件都是一个QWidget,QWidget类对象常用作父组件或顶级组件使用。

QLabel组件

QLabel组件用于显示一个提示性字符串,是功能性组件,一般需要父组件作为容器,QLabel作为窗口存在没有实际意义。

二、窗口类型

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类提供了窗口部件所需的坐标系统成员函数

    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 
#include "Widget.h"#include 
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 &);