说一说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 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
