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

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据