说一说QWidget
目录
关于QWidget
作为界面组件时,你需要有印象的
1. 控制属性
2. 组件状态与交互属性
3. 外观和样式属性
4. 布局与子组件管理属性
5. 图标和光标属性
6. 大小策略属性
作为单独的窗体的属性
写Qt快两年了,也写过一些规模偏大的软件,但是依旧觉得对QWidget的类比较陌生,这里整理一下笔者看到的一些笔记。供以参考翻阅!
关于QWidget
关于QWidget,他是大部分Ui控件的爹。几乎所有的常用控件都是直接或者是间接的继承了QWidget。也就是说,它实际上定义了控件的最基础属性。我们很多时候聊Ui布局感官可能就需要从这里开始顺藤摸瓜。
作为界面组件时,你需要有印象的
属性很多,我委托GPT帮助我整理了一下,下面是我审核后认为无误的部分:
1. 控制属性
这里则是说Widget大小属性的部分,其实跟下面的外观分不开来,更多的是说Widget自身的属性。比如说窗体自身的大小策略
属性名称 | 类型 | 功能说明 | 使用示例 | 注意事项 |
---|---|---|---|---|
windowTitle | QString | 设置或获取窗口的标题。 | setWindowTitle("My Application"); | 窗口标题通常在窗口的标题栏中显示。 |
geometry | QRect | 设置或获取窗口的位置和大小。 | setGeometry(100, 100, 800, 600); | 参数依次为窗口的x坐标、y坐标、宽度和高度。 |
size | QSize | 设置或获取窗口的大小。 | resize(800, 600); | 仅修改窗口的大小,不改变位置。 |
minimumSize | QSize | 设置窗口的最小大小。 | setMinimumSize(400, 300); | 当用户调整窗口时,不能小于该大小。 |
maximumSize | QSize | 设置窗口的最大大小。 | setMaximumSize(1200, 800); | 当用户调整窗口时,不能大于该大小。 |
isVisible | bool | 获取窗口是否可见。 | bool visible = isVisible(); | 该属性通常在运行时动态变化。 |
2. 组件状态与交互属性
属性名称 | 类型 | 功能说明 | 使用示例 | 注意事项 |
---|---|---|---|---|
enabled | bool | 设置或获取组件是否启用。 | setEnabled(false); | 禁用后组件无法接收用户输入。(只能看不能用) |
focusPolicy | Qt::FocusPolicy | 设置焦点策略,决定该组件如何获得焦点。 | setFocusPolicy(Qt::StrongFocus); | 可选值包括:Qt::NoFocus , Qt::TabFocus 等。 |
toolTip | QString | 设置或获取组件的工具提示。 | setToolTip("This is a button."); | 鼠标悬停时显示,通常用于提供附加信息。 |
statusTip | QString | 设置或获取组件的状态提示。 | setStatusTip("Click to perform action."); | 通常在状态栏显示,提供操作的简短描述。 |
whatsThis | QString | 设置“这是什么”提示。 | setWhatsThis("This button starts the application."); | 提供更详细的说明,可以通过帮助系统访问。 |
mouseTracking | bool | 设置或获取组件是否跟踪鼠标移动。 | setMouseTracking(true); | 启用后,可以在mouseMoveEvent 中处理鼠标移动。 |
acceptDrops | bool | 设置组件是否接受拖放操作。 | setAcceptDrops(true); | 需要重载dragEnterEvent 和dropEvent 。 |
tabletTracking | bool | 设置或获取组件是否跟踪平板输入。 | setTabletTracking(true); | 启用后,可以在tabletEvent 中处理平板输入。 |
3. 外观和样式属性
属性名称 | 类型 | 功能说明 | 使用示例 | 注意事项 |
---|---|---|---|---|
styleSheet | QString | 设置组件的样式表,定义组件的外观。 | setStyleSheet("background-color: yellow;"); | 使用CSS样式表语法,可用于复杂的样式设置。 |
autoFillBackground | bool | 设置是否自动填充背景。 | setAutoFillBackground(true); | 使背景颜色填充组件的整个区域。 |
palette | QPalette | 获取或设置组件的调色板,控制颜色和样式。 | QPalette palette; palette.setColor(QPalette::Window, Qt::blue); setPalette(palette); | 颜色可针对不同状态(如禁用、悬停等)设置。 |
font | QFont | 设置或获取组件的字体。 | setFont(QFont("Arial", 12)); | 字体设置会影响文本的显示效果。 |
4. 布局与子组件管理属性
属性名称 | 类型 | 功能说明 | 使用示例 | 注意事项 |
---|---|---|---|---|
layout | QLayout* | 设置或获取组件的布局管理器。 | QVBoxLayout *layout = new QVBoxLayout(this); setLayout(layout); | 只能有一个布局管理器,设置后会删除之前的布局。 |
parent | QWidget* | 设置或获取组件的父对象。 | QWidget *child = new QWidget(this); | 父对象负责管理子对象的生命周期。 |
children | QList<QWidget*> | 获取组件的子对象列表。 | QList<QWidget*> children = this->findChildren<QWidget*>(); | 可以使用模板过滤特定类型的子对象。 |
5. 图标和光标属性
这是用在widget显示icon的
属性名称 | 类型 | 功能说明 | 使用示例 | 注意事项 |
---|---|---|---|---|
iconSize | QSize | 设置图标的显示大小(在某些组件中有效)。 | setIconSize(QSize(32, 32)); | 适用于如QToolButton等需要图标的组件。 |
cursor | QCursor | 设置或获取鼠标光标。 | setCursor(Qt::PointingHandCursor); | 可以使用Qt预定义的光标类型,或自定义光标。 |
6. 大小策略属性
控制了控件的大小对于外部布局时的行为。比如说Agressive的占据尽可能大的空间或者选择保守的策略。
属性名称 | 类型 | 功能说明 | 使用示例 | 注意事项 |
---|---|---|---|---|
sizePolicy | QSizePolicy | 设置组件的大小策略,决定如何调整大小。 | setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); | 影响组件在布局中的表现和调整。 |
很多都很好理解,但是这个sizePolicy可能会在后面的布局的时候会用到,这里说一下:
sizeType属性说明 | 值 | 说明 |
---|---|---|
Fixed | 0 | 固定值策略: Qwidget.sizeHint()对应的缺省大小就是部件的固定不变大小,因此部件不能放大也不能缩小。 |
Minimum | GrowFlag | 指定最小值策略: Qwidget. sizeHint()对应的缺省大小是最小值,不能调整部件大小到比缺省大小更小的尺寸,并且该值应该足够满足部件的展现。部件允许扩展,但是Qt并不建议扩展(例如:水平方向上的按钮)。 |
Maximum | ShrinkFlag | 指定最大值策略: Qwidget. sizeHint()对应的缺省大小是最大值,假如其它部件需要空间并且不会破坏该部件,那么该部件允许被缩小(例如:-个分割线)。 |
Perferred | GrowFlag|ShrinkFlag | 首选项策略: Qwidget sizeHint()对应的缺省大小是最佳效果,部件允许放大或缩小,但不建议扩展比sizeHint()大,该策略是缺省策略。 |
Expanding | GrowFlag|ShrinkFlag|ExpandFlag | 扩展策略: Qwidget. sizeHint()对应的缺省大小是合理的大小,但部件允许缩小并且可用。部件可以利用额外的空间,因此它将会得到尽可能多的空间(例如:水平方向上的滑块)。 |
MinimumExpanding | GrowFlag|ExpandFlag | 最小可扩展策略: Qwidget. sizeHint()对应的缺省大小是最小值,并且大小足够。部件允许使用额外空间,因此它将会得到尽可能多的空间(例如:水平方向上的滑块)。 |
Ignored | ShrinkFlag|GrowFlag|IgnoreFlag | Qwidget.sizeHint()对应的缺省大小将会被忽略,部件将会获取尽可能多的空间。 |
感谢qt 如何设计好布局和漂亮的界面。_qt 界面-CSDN博客的大佬,这里引用一下:
-
Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。
-
Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。
-
Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。
-
Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小。
-
Expanding:控件可以自行增大或者缩小。(原文这里的Expanding打错了,打成了Expandint)
-
MinimumExpanding:控件的sizeHint是它的sizeHint,但是可以使用额外的空间,也就是它会尽可能得到更多的空间。
-
Ignored:控件的sizeHint不起作用,它会尽可能得到更多的空间。
这里就把常见的必备属性说完了,下面聊一聊当QWidget是一个单独的窗体的时候的行为。
作为单独的窗体的属性
属性名称 | 类型 | 功能说明 |
---|---|---|
windowTitle | QString | 设置或获取窗口的标题。 |
windowIcon | QIcon | 设置或获取窗口的图标。 |
windowOpacity | qreal | 设置窗口的不透明度,值范围为0.0(完全透明)到1.0(完全不透明)。 |
windowFilePath | QString | 获取或设置窗口相关的文件路径(在某些应用程序中使用)。当然Windows Meaningful Only |
windowModified | bool | 设置或获取窗口是否被修改过,通常用于指示文件是否已更改。 |
windowModality | Qt::WindowModality | 设置窗口的模态性,决定是否阻塞其他窗口的输入。 |
windowState | Qt::WindowState | 设置或获取窗口的状态(如最小化、最大化)。 |
windowFlags | Qt::WindowFlags | 设置窗口的标志,决定窗口的行为和外观。 |
相关文章:
说一说QWidget
目录 关于QWidget 作为界面组件时,你需要有印象的 1. 控制属性 2. 组件状态与交互属性 3. 外观和样式属性 4. 布局与子组件管理属性 5. 图标和光标属性 6. 大小策略属性 作为单独的窗体的属性 写Qt快两年了,也写过一些规模偏大的软件,…...
Web3.0技术入门
Web3.0技术入门是一个涉及多个方面和领域的复杂过程,以下是一些关键的步骤和要点,帮助您初步了解并掌握Web3.0技术。 一、了解Web3.0的基本概念 Web3.0也被称为下一代互联网,它是对当前互联网(Web2.0)的演进和升级。…...

spygalss cdc 检测的bug(二)
当allow_qualifier_merge设置为strict的时候,sg是要检查门的极性的。 如果qualifier和src经过与门汇聚,在同另一个src1信号或门汇聚,sg是报unsync的。 假设当qualifier为0时,0&&src||src1src1,src1无法被gat…...
集合论(ZFC)之 选择公理(Axiom of Choice)注解
直观感受(Intuition) 集合论(ZFC)中的 "C" 指的是选择公理(Axiom of Choice)中的"choice"。简单来说,对于任一非空集合 S,那么存在一个函数 f,选择出…...
JS:字符串操作
目录 1、 字符串分割 1、 字符串分割 var str "123,456,789"; console.log(str.split(,)); // ["123", "456", "789"]...

.NET 一款二进制文件转换Shellcode的工具
01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失…...

【CSS】——基础入门常见操作
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:CSS引入 二:CSS对元素进行美化 1:style修饰 2:选…...
LuaJIT源码分析(五)词法分析
LuaJIT源码分析(五)词法分析 lua虽然是脚本语言,但在执行时,还是先将脚本编译成字节码,然后再由虚拟机解释执行。在编译脚本时,首先需要对源代码进行词法分析,把源代码分解为token流。lua的toke…...
005 匿名信
005 匿名信 题目描述 电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字剪下来,剪拼成一封匿名信。现在有一名举报人,希望借鉴这种方式,使用英文报刊完成举报操…...

聊聊Web3D 发展趋势
随着 Web 技术的不断演进,Web3D 正逐渐成为各行业数字化的重要方向。Web3D 是指在网页中展示 3D 内容的技术集合。近年来,由于 WebGL、WebGPU 等技术的发展,3D 内容已经能够直接在浏览器中渲染,为用户提供更加沉浸、互动的体验。以…...
【数据结构与算法】LeetCode: 贪心算法
文章目录 LeetCode: 贪心算法买卖股票的最佳时机 (Hot100)买卖股票的最佳时机 II跳跃游戏 (Hot100)跳跃游戏 II(Hot100)划分字母区间 (Hot100)分发饼干K次取反后最大化的…...

Date 日期类的实现(c++)
本文用c实现日期类 将会实现以下函数 bool operator<(const Date& d);bool operator<(const Date& d);bool operator>(const Date& d);bool operator>(const Date& d);bool operator(const Date& d);bool operator!(const Date& d);Date&…...

智能家居10G雷达感应开关模块,飞睿智能uA级别低功耗、超高灵敏度,瞬间响应快
在当今科技飞速发展的时代,智能家居已经逐渐成为人们生活中不可或缺的一部分。从智能灯光控制到智能家电的联动,每一个细节都在为我们的生活带来便利和舒适。而在众多智能家居产品中,10G 雷达感应开关模块以其独特的优势,正逐渐成…...

头歌——人工智能(机器学习 --- 决策树2)
文章目录 第5关:基尼系数代码 第6关:预剪枝与后剪枝代码 第7关:鸢尾花识别代码 第5关:基尼系数 基尼系数 在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益率…...
一七一、React性能优化方式
在 React 中进行性能优化可以通过多种手段来减少渲染次数、优化渲染效率并减少内存消耗。以下是常见的性能优化方法及示例: 1. shouldComponentUpdate shouldComponentUpdate 是类组件中的生命周期方法,它可以让组件在判断是否需要重新渲染时ÿ…...
编写dockerfile生成镜像,并且构建容器运行
编写dockerfile生成镜像,并且构建容器运行 目录 编写dockerfile生成镜像,并且构建容器运行 概述 一、dockerfile文件详解 Dockerfile的基本结构 Dockerfile的常用指令 二、构建过程 概述 随着微服务应用越来越多,大家需要尽快掌握dock…...
Java项目练习——学生管理系统
1. 整体结构 代码实现了基本的学生管理系统功能,包括登录、注册、忘记密码、添加、删除、修改和查询学生信息。 使用了ArrayList来存储用户和学生信息。 使用了Scanner类来处理用户输入。 2. 主要功能模块 登录 (logIn):验证用户名和密码,…...
sqlserver、达梦、mysql的差异
差异项sqlserver达梦mysql单行注释---- 1、-- ,--后面带个空格 2、# 包裹对象名称,如表、表字段等 [tableName] "tableName"tableName表字段自增IDENTITY(1, 1)IDENTITY(1, 1)AUTO_INCREMENT二进制数据类型IMAGEIMAGE、BLOBBLOB 存储一个汉字需…...

Spring AOP(定义、使用场景、用法、3种事务、事务失效场景及解决办法、面试题)
目录 1. AOP定义? 2.常见的AOP使用场景: 3.Spring AOP用法 3.1 Spring AOP中的几个核心概念 3.1.1 切面、切点、通知、连接点 3.1.2 切点表达式AspectJ 3.2 使用 Spring AOP 的步骤总结 3.2.1 添加依赖: 3.2.2 定义切面和切点(切点和…...
Flutter鸿蒙next 封装对话框详解
✅近期推荐:求职神器 https://bbs.csdn.net/topics/619384540 🔥欢迎大家订阅系列专栏:flutter_鸿蒙next 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...