QT开发学习-第四章-窗口组件和窗口类型

本文档详细介绍了QT开发中的窗口组件,如QWidget和QLabel,展示了不同类型的窗口(如Qt::Window, Qt::Dialog等),并深入解析了坐标系统在部件定位和设置中的应用。跟随教程,掌握窗口组件的布局与定制技巧。
摘要由CSDN通过智能技术生成

第一章讲解了QT简介,介绍了关于QT的大概构成。
链接:QT开发学习-第一章-QT简介
第二章讲解了关于QT开发的相关环境搭建。
链接:QT开发学习-第二章-QT开发环境搭建
第三章讲解了关于QT-GUI原理分析。
链接:QT开发学习-第三章-QTGUI原理分析
感兴趣的小伙伴记得三连哦!
今日分享:“人不管走到哪一步,总得找点乐子,想一点办法,老是愁眉苦脸的,干嘛呢!”

在这里插入图片描述



一、窗口组件

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

组件的类型:

A、容器类(父组件)用来包含其他的界面组件;
B、功能类(子组件)用于实现特定的交互功能。

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

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

  • QWidget组件

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

  • QLabel组件

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

继承自QWidget的QT类:
在这里插入图片描述


二、窗口类型

QT中可以根据需要定制窗口样式,不同的窗口类型可以使窗口具有不同的样式特性。

窗口类型:

Qt::WidgetQt::WindowQt::Dialog
Qt::SheetQt::DrawerQt::Popup
Qt::ToolQt::ToolTipQt::SplashScreen
Qt::DesktopQt::SubWindow

窗口标识:Qt::WindowStaysOnTopHint


三、坐标系统

QT中的坐标系统以左上角为原点,水平为x轴,从左向右为正向,垂直为y轴,从上到下为正向。

3.1. 窗口部件的定位

GUI程序在坐标系统中进行窗口和部件的定位,定位类型分为:

  A、顶级窗口部件的定位
  B、窗口内部件的定位
  C、窗口部件的大小设置

QT使用统一的坐标系统定位窗口部件的位置和大小.

QT部件类提供成员函数在坐标系统中进行定位.

QWidget类提供了窗口部件所需的坐标系统成员函数.

	int x() const;
	int y() const;
	
	int width() const;
	int height() const;

在这里插入图片描述


以窗口左上角为坐标系原点,但width()和height()分别为客户区的宽和高.

const QRect &geometry() const;

int x() const;
int y() const;

int width() const;
int height() const;

以客户区左上角为坐标系原点,width()和height()分别为客户区的宽和高.

QRect frameGeometry() const;

int x() const;
int y() 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平台在窗口显示出来之前无法确定窗口的大小。


3.2. 窗口部件的设置

QWidget类提供了设置窗口部件大小的成员函数

  • A、改变窗口部件的大小
void resize(const QSize &);
void resize(int w, int h);
  • B、改变窗口部件的位置
void move(int x, int y);
void move(const QPoint &);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值