QT5笔记3 QT GUI基础和窗口布局


前言

QT主要是用于构建GUI程序的,所以了解QT基本的一些GUI组件及其构成原理非常重要。


一、QT中QWidget,QMainWindow和QDialog介绍

在我们使用QtCreator创建GUI工程的时候,一般会让我们从QWidget,QMainWindow和QDialog中选取一个主窗口。
在QT中的GUI部件,遵循着非常严格的继承关系,这也是我们需要向QT学习的重要部分,即如何使用利用C++面向对象的语言特性,去搭建一套框架。
QWidget继承自QObject和QPaintDevice,利用继承的特性,QWidget中可以调用QObject和QPaintDevice中的非private部分的特性和函数,另外也可以重写两个父类中的虚函数。这也提示我们,在查询帮助文档的时候,查找某个类中的函数时,如果该类中找不到,需要查找父类中有无该函数。
而QWidget基本是Qt中其它GUI部件的父类。比如QWindow即是在QWidget的基础上添加了,QMenuBar(菜单栏),QToolBar(工具栏),QStatusBar(状态栏)和CentralWidget(中心部件)。所以QMainWindow在继承了QWidget的属性和方法的同时,对其进行了扩充。
QDialog也是同样对QWidget的扩充。

二、QT中的布局

代码如下(示例):
QT中的布局可以使用绝对布局(使用绝对尺寸),人工布局和Qt中的布局管理器。前两种方法无法适应在窗口改变时,部件的相对位置,而且维护比较困难,所以一般Qt中的GUI布局使用Qt中的布局管理器。
布局主要有三种形式,水平布局,垂直布局和栅格布局,分别对应QHBoxLayout,QVBoxLayout和QGridLayout。三种布局方式在UI设计师模式下很容易实现,现主要讲解代码实现。
例如下面的代码表示栅格布局的使用方法:

//首先创建layout对象
QHBoxLayout layout1=new QHBoxLayout;
//向layout中加入QWidget或者其子类对象的方法
layout1->addWidget(lable1)
//向layout中加入另外一个layout的方法
layout2->addItem(layout1);
//QGridLayout的使用方法
    nameLabel=new QLabel(tr("姓名:"));
    nameLabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
    ageLabel=new QLabel(tr("年龄:"));
    ageLabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
    numLabel=new QLabel(tr("电话:"));
    numLabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
    nameLineEdit=new QLineEdit();
    nameLineEdit->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    ageLineEdit=new QLineEdit();
    ageLineEdit->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    numLineEdit=new QLineEdit();
    numLineEdit->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    QGridLayout* layout=new QGridLayout;
    layout->addWidget(nameLabel,0,0);
    layout->addWidget(nameLineEdit,0,1);
    layout->addWidget(ageLabel,1,0);
    layout->addWidget(ageLineEdit,1,1);
    layout->addWidget(numLabel,2,0);
    layout->addWidget(numLineEdit,2,1);

另外可以规定QWidget及其子类实例化对象的相关的尺寸属性(sizePolicy),比如minimum,maximum,preffered,expanding,fixed等等,实现在同一个layout中不同对象的大小的设置。

总结

(1)简单介绍了Qt 中GUI部件的一些继承关系,主要介绍了QWidget和QMainWindow和QDialog的继承关系; (2)介绍了Qt中的布局类,及其使用方法;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值