IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> QT5笔记3 QT GUI基础和窗口布局 -> 正文阅读

[C++知识库]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中的布局类,及其使用方法;
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:16:03  更:2021-08-31 15:17:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:20:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码