Qt窗口及QWidget类详解

2024-05-09 03:20
文章标签 详解 qt 窗口 qwidget

本文主要是介绍Qt窗口及QWidget类详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QtWidgets 模块及窗口基本概念

QWidget 类是所有用户界面对象的基类,QWidget 及其子类是开发桌面应用的核心,这些类都位于 QtWidgets 模块内,注意:QtWidgets 是模块,QWidget 是类(少一个字母 t 和最后的 s)。

部件或窗口部件:Qt 把建立用户界面的元素称为窗口部件(widget),简称部件,比如:主窗口、对话框、按钮、标签等在 Qt 中都称为部件。

窗口没有嵌入到其他部件中的部件被称为窗口,通常来说窗口是没有父部件的部件(也可以有父部件),因此窗口又被称为顶级部件,与其相对的非窗口部件,称为子部件。窗口通常含有边框和标题栏(当然也可以没有这些)。窗口若有父部件,则在父级被删除时删除。QDialog 和 QMainWindow 部件,默认为窗口,即使在构造函数中为其指定父部件,仍是窗口。窗口通常会显示在任务栏上。

容器:放置其他部件的部件被称为容器,注意,容器可以嵌入到其他部件(即容器可以有父部件),而窗口则不能。

窗口和窗口部件在 Qt 中是两个不同的概念,为避免引起混乱,以后把窗口部件统称为部件。

若一个部件是另一个部件的父对象,则子部件的边界会完全的位于父部件的边界内部。

Qt 中大部分部件都是用作子部件的,比如标签、按钮等。经常被用作窗口的部件是QMainWindow 和 QDialog 的各个子类

Qt 使用枚举 Qt::WindowType 对部件的类型进行描述,比如该部件是否是窗口,是否是子窗口,是否是对话框,是否拥有菜单栏等。

Qt 每个部件的构造函数都会接受一个或两个标准的如下形式的参数,也就是说 QWidget 类及其子类的构造函数都会有如下形式的一个或两个形参
1) *QWidget parent =0

  • 作用:该参数用于指定此部件的父部件,若为 0(默认值),则表示此部件没有父部件,
    因此是一个窗口。
    2)Qt::WindowFlags f=0
  • 语法解析:Qt 是一个 C++名称空间, WindowFlags 类型是使用 C++语法的typedef 重命名后的类型,其最终结果的语法为
typedef QFlags<WindowType> WindowFlags
  • WindowType:是一个枚举类型,参数 f 的取值必须是 WindowType 的成员,该枚举类型拥有众多的成员,这些不同的成员决定了部件的不同外观和类型,其语句原型大约如下:
enum WindowType {Widget,Window,Dialog,Sheet,...,WindowType_Mask}
  • WindowFlags:是类型 QFlags,这种类型是枚举类型所对应的标志,该类型之所以能接收枚举类型 WindowType 的值,是因为在 QFlags 中有一个单形参构造函数,这里列出其简化后的形式为 QFlags(QFlags f){…},注:单形参构造函数可用于类型转换(这是 C++语法)。
  • QFlags:是 Qt 中内置的模板类,其主要作用是为枚举值及其组合运算提供类型安全的算法,这意味着,在给参数 f 指定值时,必须是类型正确的枚举值,否则就会发生错误。组合运算是指在枚举值之间进行按位与、或等运算。
  • 作用设置部件的标志,用于设置部件的类型及其外观。默认情况下,其值为Qt::Widget,表示若部件没有父部件,则就是子部件,否则就是窗口。若标志取值为 Qt::Window,则此时无论该部件是否有父部件,都表示该部件是一个窗口,也就是说在这种情况下,该部件可以是一个有父部件的窗口(这是个例外)。
  • 注意:使用标志和枚举的不同之处在于,若函数的参数是标志,则意味着实参可以是多个按位“或”的枚举类型值,若函数的参数是枚举,则只能指定该枚举类型的单个值,不能使用按位“或”运算符。

Qt::WindowType 枚举常见取值如下:

  • Qt::Widget:QWidget 构造函数的默认值,表示若部件没有父部件,则就是子部件,否则就是窗口;
  • Qt::Window:此时无论该部件是否有父部件,都表示该部件是一个窗口,也就是说在这种情况下,该部件可以是一个有父部件的窗口(例外情形),通常该窗口会有标题栏、边框等;
  • Qt::Dialog:该部件是一个对话框,这是 QDialog 构造函数的默认值。对话框通常没有最大化和最小化按钮,这是与窗口的区别
  • Qt::Popup:该部件是一个弹出式顶层窗口;
  • Qt::SplashScreen:该部件是一个欢迎窗口,这是 QSplashScreen 构造函数的默认值;
  • Qt::Desktop:该部件是个桌面窗口,这是 QDesktopWidget 构造函数的默认值;
  • Qt::CoverWindow:该部件是一个封面窗口,通常用于在程序最小化时显示该窗口。

QWidget类介绍

QWidget 类描述了部件的基本信息,由该类创建的部件在外观上是一个最简单的部件,它看起来是一个空的窗口,QWidget 类通常用于创建一个窗口。QWidget 类非常复杂,该类包含一百多个函数,子类化 QWidget 类或其子类就可以创建自已的窗口部件。Qt 的所有UI 元素都是 QWidget 类的子类或与 QWidget 子类一起使用。

任何没有父母的 QWidget 都将成为一个窗口,在大多数平台上都会列在桌面的任务栏中。通常应用程序只需要一个窗口即主窗口。

QWidget类与位置相关的函数

这篇关于Qt窗口及QWidget类详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972250

相关文章

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推