说一说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 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…...
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
前言 随着多模态大模型的发展,其不仅限于文字处理,更能够在图像、视频、音频方面进行识别与理解。医疗领域中,医生们往往需要对各种医学图像进行处理,以辅助诊断和治疗。如果将多模态大模型与图像诊断相结合,那么这会…...
SCSI驱动与 UFS 驱动交互概况
SCSI子系统概况 SCSI(Small Computer System Interface)子系统是 Linux 中的一个模块化框架,用于提供与存储设备的通用接口。通过 SCSI 子系统,可以支持不同类型的存储协议(如 UFS、SATA、SAS),…...
软件工程实践项目:人事管理系统
一、项目的需求说明 通过移动设备登录app提供简单、方便的操作。根据公司原来的考勤管理制度,为公司不同管理层次提供相应的权限功能。通过app上面的各种标准操作,考勤管理无纸化的实现,使公司的考勤管理更加科学规范,从而节省考…...
不使用三方软件,win系统下禁止单个应用联网能力的详细操作教程
本篇文章主要讲解,在win系统环境下,禁止某个应用联网能力的详细操作教程,通过本教程您可以快速掌握自定义对单个程序联网能力的限制和禁止。 作者:任聪聪 日期:2024年10月30日 步骤一、按下win按键(四个小方…...
近似线性可分支持向量机的原理推导
近似线性可分的意思是训练集中大部分实例点是线性可分的,只是一些特殊实例点的存在使得这种数据集不适用于直接使用线性可分支持向量机进行处理,但也没有到完全线性不可分的程度。所以近似线性可分支持向量机问题的关键就在于这些少数的特殊点。 相较于…...
Golang开发环境
Golang开发环境搭建 Go 语言开发包 国外:https://golang.org/dl/ 国内(推荐): https://golang.google.cn/dl/ 编辑器 Golang:https://www.jetbrains.com/go/ Visual Studio Code: https://code.visualstudio.com/ 搭建 Go 语言开发环境,需要…...
测试华为GaussDB(DWS)数仓,并通过APISQL快速将(表、视图、存储过程)发布为API
华为数据仓库服务 数据仓库服务(Data Warehouse Service,简称DWS)是一种基于公有云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。DWS是基于华为融合数据仓库GaussDB产品的云原生服务&a…...
使用GetX实现GetPage中间件
前言 GetX 中间件(Middleware)是 GetX 框架中的一种机制,用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件,可以有效地控制用户的访问流程,并在适当条件下引导用户到所需页面。 这…...
Navicat 17 功能简介 | SQL 预览
Navicat 17 功能简介 | SQL 预览 随着 17 版本的发布,Navicat 也带来了众多的新特性,包括兼容更多数据库、全新的模型设计、可视化智能 BI、智能数据分析、可视化查询解释、高质量数据字典、增强用户体验、扩展MongoDB 功能、轻松固定查询结果、便捷URI …...
ubuntu、Debian离线部署gitlab
一、软件包下载 gitlab安装包下载链接 ubuntu: ubuntu/focal 适用于 ubuntu20系列 ubuntu/bionic 适用于 ubuntu18 系列 Debian: debian/buster 适用于 Debian10系列 debian/bullseye 适用于 Debian11、12系列 二、安装gitlab ubuntu需要安装一些环境…...
网站引导页利弊/东莞谷歌推广公司
异常处理机制的初衷是将不可预期异常的处理代码和正常的业务逻辑处理代码分离,因此绝不要使用异常处理来代替正常的业务逻辑判断。若错误是可预料的,则必须提供处理错误的代码来处理错误,而不是抛出异常。//异常packagebin;importjava.io.Fil…...
wordpress 调整字体/软文营销案例200字
简单map应用 <span style"white-space:pre"> </span>描述:给定一个数组和一个sum,返回数组中两个和等于sum的数的下标列表。 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring&…...
长春企业做网站/线上电脑培训班
问题背景 版本HslCommunication.5.3.3型号FX3U 16M、FX3U 48M软件C# Windows程序报错接口 HslCommunication.Profinet.Melsec.MelsecFxSerial; public virtual OperateResult Write(string address, ushort value); 接口内部报错内容 未将对象引用设置到对象的示例。操作…...
素材模板网站/培训机构学校
1、exec的使用 # 储备知识 # 参数1:字符串形式的命令 # 参数2:全局作用域(字典形式),如果不指定默认使用globals() # 参数3:局部作用域(字典形式),如果不指定默认就使用locals&#…...
免费手机网站制作/2023免费网站推广大全
1种方法:RangeQueryBuilder 构建范围查询条件;可以使用 RangeQueryBuilder 作为时间范围查询。示例如下:public class EsRange{public void RangeSearch(TransportClient client){//时间范围的设定RangeQueryBuilder rangequerybuilder Quer…...
做ppt音乐模板下载网站/app下载量推广
1. 开始一个Thread开始一个Thread很简单,声明一个Thread实例,然后调用Start方法即可 Thread.StartThread threadA new Thread(new ThreadStart(WorkMethod));threadA.Start();Thread threadB new Thread(new ParameterizedThreadStart(WorkMethodWithP…...