Qt窗口及QWidget类详解

news/2024/5/20 6:17:36

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类与位置相关的函数


http://www.mrgr.cn/p/61411531

相关文章

英语学习笔记6——What make is it?

What make is it? 它是什么牌子的&#xff1f; make n.&#xff08;产品的&#xff09;品牌名称    v. 制作 区别&#xff1a;model n.&#xff08;产品的&#xff09;型号       n. 模型       n. 模特 make 指的是大的品牌名称&#xff0c; model 是旗下产品…

小组练习:拿出手机发朋友圈/微信群, 收集你的目标用户对你当前产品的NPS。 每个项目小组收集不少于

小组练习: 拿出手机发朋友圈/微信群, 收集你的目标用户对你当前产品的NPS。 每个项目小组收集不少于 30 条投票,截图展示 在学习通提交解答的同时,可以同步发布在团队和个人博客上,作为学习心得体会,记录下来。 我的答案: 【第二组】 NPS(Net Promoter Score)是一种用来…

商超物联网方案-Hotspot Service和客流分析方案概述

商超物联网方案-Hotspot Service和客流分析方案概述 场景概述 大型商场、大型综合体在相互竞争及线上消费的影响下&#xff0c;利润增长缓慢&#xff0c;迫切需要通过提供个性化服务提升顾客购物体验&#xff0c;促进利润增长。 向不同顾客推送其感兴趣的广告&#xff0c;不仅…

python在Scikit-learn中用决策树和随机森林预测NBA获胜者

原文链接:http://tecdat.cn/?p=5222 原文出处:拓端数据部落公众号在本文中,我们将以Scikit-learn的决策树和随机森林预测NBA获胜者。美国国家篮球协会(NBA)是北美主要的男子职业篮球联赛,被广泛认为是首屈一指的男子职业篮球联赛在世界上。它有30个队(美国29个,加拿大…

【Azure Function】Azure Function中的Timer Trigger无法自动触发问题

问题描述 在Azure Function中,部署了定时触发器函数(Timer Trigger),却无法按时触发。问题解答 登录Function的Kudu站点,查看 logfiles中 application/function/host目录下的日志文件,发现错误消息:Singleton lock renewal failed for blob xxxxxxxxxxxxxxxxxxxxxxxxxxxxx…

自学错误合集--项目打包报错,运行报错持续更新中

java后端自学错误总结 一.项目打包报错2.项目打包之后运行报错 二.项目运行报错 一.项目打包报错 javac: &#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ļ&#xfffd;: E:\xx\xx\xx\docer-xx\src\main\java\xx\xx\xx\xx\xx\xx.java &#xfffd;&#xff…

ESP32-C6测评-环境安装

import time from machine import Pinled=Pin(15,Pin.OUT)while True:led.value(1)time.sleep(0.01)led.value(0)time.sleep(0.3)

Transformer 解析 超级详细版

推荐学习视频 汉语自然语言处理-从零解读碾压循环神经网络的transformer模型(一)- 注意力机制-位置编码-attention is all you need_哔哩哔哩_bilibili 目录 首先下transformer和LSTM的最大区别是什么&#xff1f; 1.positional \ encoding, 即位置嵌入(或位置编码); 2 自注…

国产持续集成工具 - Gokins

国产持续集成工具 - Gokins 持续集成(Continuous Integration ,CI) 介绍 在传统软件开发过程中,集成通常发生在每个人都完成了各自的工作之后。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,…

链表面试题目:反转一个单链表的两种方法(解析+代码)

我们继续来看一下单链表的题目和代码吧&#xff0c;把学习的知识运用到实际中&#xff0c;大家加油 先看OJ题目 OJ题目&#xff08;反转单链表&#xff09; 双指针法 1.创建两个指针&#xff0c;为pre curr&#xff0c;curr指向头结点&#xff0c;curr用来遍历链表 2.curr指向…

【汇编语言小练习输入两个数字然后输出它们的和】

这个程序是用汇编语言编写一个简单的程序&#xff0c;它将从键盘输入两个数字&#xff0c;然后输出它们的和。 .MODEL SMALL .STACK 100H.DATAINPUT_MSG1 DB Enter the first number: $INPUT_MSG2 DB 13, 10, Enter the second number: $RESULT_MSG DB 13, 10, The sum is: $N…

2024 FIC取证比赛wp

本次竞赛容器挂载密码为: 2024Fic@杭州Powered~by~HL!2024年4月,卢某报案至警方,声称自己疑似遭受了“杀猪盘”诈骗,大量钱财被骗走。卢某透露,在与某公司交流过程中结识了员工李某。李某私下诱导卢某参与赌博游戏,起初资金出入均属正常。但随后,李某称赌博平台为提升安…

建设电池超级工厂?从MES开始

锂离子电池产量的增长令人震惊。为了支持电动汽车 (EV) 制造能力的提高&#xff0c;电池需求预计到 2030 年将达到 9.3 太瓦时&#xff0c;比 2020 年的 水平增长1,600%以上。 虽然亚洲在产能方面继续处于领先地位&#xff0c;但目前计划在欧洲新建 38 个电池超级工厂&#xf…

剁手党必看——转转红包使用规则与最优组合计算全解析

​ 1、省钱攻略基础之“了解平台红包使用规则” 2、举个栗子 3、最优红包组合计算方法进化过程 3.1、初代“笛卡尔乘积”版 3.2、二代“边算边比较Map聚合”版 3.3、三代“边算边比较数组索引定位”版 4、总结 1、省钱攻略基础之“了解平台红包使用规则” 规则一&#x…

【只显示某一层,其它层隐藏】- PCB板工艺及AD软件配置

在pcb文件视图下&#xff0c;按下字母L&#xff0c;弹出如下框&#xff0c; 选择view options 在single layer mode 勾选ON&#xff0c;就可以隐藏其他层 单层显示效果 方法二&#xff1a;shitfs快捷键

抖音赚钱可以看看这些小众赛道,很多人都赚到了自己的第一个一百万!2024适合小白入手的项目!白手起家新手小白创业真经

抖音创业最大的魅力是什么&#xff1f; 如果你还想创业&#xff0c;还想在抖音这个赛道上发光发热&#xff0c;不妨停下来思考一下这个问题。 那就是可以让一个及其小众的小品类的产品&#xff0c;捅破天花板&#xff01;达到一个不可思议的销售额&#xff01;这就是我的答案&…

[Cmake Qt]找不到文件ui_xx.h的问题?有关Qt工程的问题,看这篇文章就行了。

前言 最近在开发一个组件,但是这个东西是以dll的形式发布的界面库,所以在开发的时候就需要上层调用。如果你是很懂CMake的话,ui_xx.h的文件目录在$下 然后除了有关这个ui_xx.h,还有一些别的可以简单聊聊的 一、父子工程组织,或者说依赖关系 在使用CMake进行开发的时候,一…

第50期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

Linux之手把手教会修改网卡名称【转载】

一、为什么要修改网卡名称在早期的linux系统中,网卡名称常常以传统的命名方式eth0、eth1、eth2来命名。 例如,CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,但是,如果再新增硬件设备,也有可能会被识别成 eth0,eth1等。 CentOS 7开始,改变了网卡设备命名规则,…