说一说QWidget

目录

关于QWidget

作为界面组件时,你需要有印象的

1. 控制属性

2. 组件状态与交互属性

3. 外观和样式属性

4. 布局与子组件管理属性

5. 图标和光标属性

6. 大小策略属性

作为单独的窗体的属性


写Qt快两年了,也写过一些规模偏大的软件,但是依旧觉得对QWidget的类比较陌生,这里整理一下笔者看到的一些笔记。供以参考翻阅!

关于QWidget

关于QWidget,他是大部分Ui控件的爹。几乎所有的常用控件都是直接或者是间接的继承了QWidget。也就是说,它实际上定义了控件的最基础属性。我们很多时候聊Ui布局感官可能就需要从这里开始顺藤摸瓜。

作为界面组件时,你需要有印象的

属性很多,我委托GPT帮助我整理了一下,下面是我审核后认为无误的部分:

1. 控制属性

这里则是说Widget大小属性的部分,其实跟下面的外观分不开来,更多的是说Widget自身的属性。比如说窗体自身的大小策略

属性名称类型功能说明使用示例注意事项
windowTitleQString设置或获取窗口的标题。setWindowTitle("My Application");窗口标题通常在窗口的标题栏中显示。
geometryQRect设置或获取窗口的位置和大小。setGeometry(100, 100, 800, 600);参数依次为窗口的x坐标、y坐标、宽度和高度。
sizeQSize设置或获取窗口的大小。resize(800, 600);仅修改窗口的大小,不改变位置。
minimumSizeQSize设置窗口的最小大小。setMinimumSize(400, 300);当用户调整窗口时,不能小于该大小。
maximumSizeQSize设置窗口的最大大小。setMaximumSize(1200, 800);当用户调整窗口时,不能大于该大小。
isVisiblebool获取窗口是否可见。bool visible = isVisible();该属性通常在运行时动态变化。
2. 组件状态与交互属性
属性名称类型功能说明使用示例注意事项
enabledbool设置或获取组件是否启用。setEnabled(false);禁用后组件无法接收用户输入。(只能看不能用)
focusPolicyQt::FocusPolicy设置焦点策略,决定该组件如何获得焦点。setFocusPolicy(Qt::StrongFocus);可选值包括:Qt::NoFocus, Qt::TabFocus等。
toolTipQString设置或获取组件的工具提示。setToolTip("This is a button.");鼠标悬停时显示,通常用于提供附加信息。
statusTipQString设置或获取组件的状态提示。setStatusTip("Click to perform action.");通常在状态栏显示,提供操作的简短描述。
whatsThisQString设置“这是什么”提示。setWhatsThis("This button starts the application.");提供更详细的说明,可以通过帮助系统访问。
mouseTrackingbool设置或获取组件是否跟踪鼠标移动。setMouseTracking(true);启用后,可以在mouseMoveEvent中处理鼠标移动。
acceptDropsbool设置组件是否接受拖放操作。setAcceptDrops(true);需要重载dragEnterEventdropEvent
tabletTrackingbool设置或获取组件是否跟踪平板输入。setTabletTracking(true);启用后,可以在tabletEvent中处理平板输入。
3. 外观和样式属性
属性名称类型功能说明使用示例注意事项
styleSheetQString设置组件的样式表,定义组件的外观。setStyleSheet("background-color: yellow;");使用CSS样式表语法,可用于复杂的样式设置。
autoFillBackgroundbool设置是否自动填充背景。setAutoFillBackground(true);使背景颜色填充组件的整个区域。
paletteQPalette获取或设置组件的调色板,控制颜色和样式。QPalette palette; palette.setColor(QPalette::Window, Qt::blue); setPalette(palette);颜色可针对不同状态(如禁用、悬停等)设置。
fontQFont设置或获取组件的字体。setFont(QFont("Arial", 12));字体设置会影响文本的显示效果。
4. 布局与子组件管理属性
属性名称类型功能说明使用示例注意事项
layoutQLayout*设置或获取组件的布局管理器。QVBoxLayout *layout = new QVBoxLayout(this); setLayout(layout);只能有一个布局管理器,设置后会删除之前的布局。
parentQWidget*设置或获取组件的父对象。QWidget *child = new QWidget(this);父对象负责管理子对象的生命周期。
childrenQList<QWidget*>获取组件的子对象列表。QList<QWidget*> children = this->findChildren<QWidget*>();可以使用模板过滤特定类型的子对象。
5. 图标和光标属性

这是用在widget显示icon的

属性名称类型功能说明使用示例注意事项
iconSizeQSize设置图标的显示大小(在某些组件中有效)。setIconSize(QSize(32, 32));适用于如QToolButton等需要图标的组件。
cursorQCursor设置或获取鼠标光标。setCursor(Qt::PointingHandCursor);可以使用Qt预定义的光标类型,或自定义光标。
6. 大小策略属性

控制了控件的大小对于外部布局时的行为。比如说Agressive的占据尽可能大的空间或者选择保守的策略。

属性名称类型功能说明使用示例注意事项
sizePolicyQSizePolicy设置组件的大小策略,决定如何调整大小。setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);影响组件在布局中的表现和调整。

很多都很好理解,但是这个sizePolicy可能会在后面的布局的时候会用到,这里说一下:

sizeType属性说明说明
Fixed0固定值策略: Qwidget.sizeHint()对应的缺省大小就是部件的固定不变大小,因此部件不能放大也不能缩小。
MinimumGrowFlag指定最小值策略: Qwidget. sizeHint()对应的缺省大小是最小值,不能调整部件大小到比缺省大小更小的尺寸,并且该值应该足够满足部件的展现。部件允许扩展,但是Qt并不建议扩展(例如:水平方向上的按钮)。
MaximumShrinkFlag指定最大值策略: Qwidget. sizeHint()对应的缺省大小是最大值,假如其它部件需要空间并且不会破坏该部件,那么该部件允许被缩小(例如:-个分割线)。
PerferredGrowFlag|ShrinkFlag首选项策略: Qwidget sizeHint()对应的缺省大小是最佳效果,部件允许放大或缩小,但不建议扩展比sizeHint()大,该策略是缺省策略。
ExpandingGrowFlag|ShrinkFlag|ExpandFlag扩展策略: Qwidget. sizeHint()对应的缺省大小是合理的大小,但部件允许缩小并且可用。部件可以利用额外的空间,因此它将会得到尽可能多的空间(例如:水平方向上的滑块)。
MinimumExpandingGrowFlag|ExpandFlag最小可扩展策略: Qwidget. sizeHint()对应的缺省大小是最小值,并且大小足够。部件允许使用额外空间,因此它将会得到尽可能多的空间(例如:水平方向上的滑块)。
IgnoredShrinkFlag|GrowFlag|IgnoreFlagQwidget.sizeHint()对应的缺省大小将会被忽略,部件将会获取尽可能多的空间。

感谢qt 如何设计好布局和漂亮的界面。_qt 界面-CSDN博客的大佬,这里引用一下:

  • Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。

  • Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。

  • Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。

  • Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小

  • Expanding:控件可以自行增大或者缩小。(原文这里的Expanding打错了,打成了Expandint)

  • MinimumExpanding:控件的sizeHint是它的sizeHint,但是可以使用额外的空间,也就是它会尽可能得到更多的空间

  • Ignored:控件的sizeHint不起作用,它会尽可能得到更多的空间。

这里就把常见的必备属性说完了,下面聊一聊当QWidget是一个单独的窗体的时候的行为。

作为单独的窗体的属性

属性名称类型功能说明
windowTitleQString设置或获取窗口的标题。
windowIconQIcon设置或获取窗口的图标。
windowOpacityqreal设置窗口的不透明度,值范围为0.0(完全透明)到1.0(完全不透明)。
windowFilePathQString获取或设置窗口相关的文件路径(在某些应用程序中使用)。当然Windows Meaningful Only
windowModifiedbool设置或获取窗口是否被修改过,通常用于指示文件是否已更改。
windowModalityQt::WindowModality设置窗口的模态性,决定是否阻塞其他窗口的输入。
windowStateQt::WindowState设置或获取窗口的状态(如最小化、最大化)。
windowFlagsQt::WindowFlags设置窗口的标志,决定窗口的行为和外观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/884019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何精准选择Yandex关键词

Hey小伙伴们&#x1f44b;&#xff0c;今天来聊聊如何精准选择Yandex关键词&#xff0c;让你的广告投放效果最大化&#xff01;&#x1f50d; 1.使用Yandex关键词工具&#xff1a;Yandex提供了关键词工具&#xff0c;如Yandex Keyword Planner和Yandex Wordstat&#xff0…

快速生成高质量提示词,Image to Prompt 更高效

抖知书老师推荐&#xff1a; 随着 AI 技术的不断发展&#xff0c;视觉信息与语言信息之间的转换变得越来越便捷。在如今的数字化生活中&#xff0c;图像与文字的交互需求愈发旺盛&#xff0c;很多人都希望能轻松将图像内容直接转化为文本描述。今天我们来推荐一款实用的 AI 工…

jmeter附件上传

可以采用录制的方式获取附件上传的http请求 普通参数 附件参数 文件名称: 方式一:如果只添项目名称,默认充jmeter的bin目录下获取 方式二:点击文件名称,再点击浏览,可以自己选择文件信息

OpenCV视觉分析之目标跟踪(7)目标跟踪器类TrackerVit的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 VIT 跟踪器由于特殊的模型结构而变得更快且极其轻量级&#xff0c;模型文件大约为 767KB。模型下载链接&#xff1a;https://github.com/opencv/…

如何用Python同时抓取多个网页:深入ThreadPoolExecutor

背景介绍 在信息化时代&#xff0c;数据的实时性和获取速度是其核心价值所在。对于体育赛事爱好者、数据分析师和投注行业而言&#xff0c;能否快速、稳定地抓取到实时比赛信息显得尤为重要。特别是在五大足球联赛中&#xff0c;能够在比赛进行时获得比分、控球率等实时数据&a…

【UBuntu20 配置usb网卡】 记录Ubuntu20配置usb网卡(特别是建立热点)

【UBuntu20 配置usb网卡】 Ubuntu20配置usb网卡&#xff08;特别是建立热点&#xff09; 一、 闲言碎语的前言 usb的外置网卡&#xff0c;相比Windows即插即用&#xff0c;Linux买回来一顿折腾&#xff0c;准备把过程梳理一下记录起来。 网卡的方案其实就那几家&#xff0c;…

前端开发模块VUE-Element UI学习笔记

前端开发模块VUE-Element UI学习笔记 文章目录 前端开发模块VUE-Element UI学习笔记 1、Element UI 简介2、Element UI 安装3、Icon 图标4、Button 按钮5、Link 超链接6、Radio 单选框7、Checkbox 多选框8、Input 输入框9、Select 下拉框10、Switch 开关 1、Element UI 简介 基…

Java面试经典 150 题.P169. 多数元素(005)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int majorityElement(int[] nums) …

如何在Python爬虫等程序中设置和调用http代理

在Python爬虫中为了更好地绕过反爬机制&#xff0c;获取网页信息&#xff0c;有时可能需要在Python中应用代理服务&#xff0c;这样做的目的就是防止自己的ip被服务器封禁&#xff0c;造成程序运行时中断连接&#xff0c;那么如何在python中设置代理呢&#xff1f; 我们通过几个…

海思MPP音视频总结

基础篇 1.常用图像格式介绍 常用图像像素格式 RGB 和 YUV。 1.1RGB RGB分类通常指的是将图像或颜色按照RGB&#xff08;红、绿、蓝&#xff09;颜色空间进行分组或分类。RGB图像格式通常包括RGB24&#xff08;RGB888&#xff09;、RGB32、RGBA、RGB565等。 RGB24是一种常用…

预览 PDF 文档

引言 在现代Web应用中&#xff0c;文件预览功能是非常常见的需求之一。特别是在企业级应用中&#xff0c;用户经常需要查看各种类型的文件&#xff0c;如 PDF、Word、Excel 等。本文将详细介绍如何在Vue项目中实现 PDF 文档的预览功能。 实现原理 后端API 后端需要提供一个…

【c++ gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试

【c gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试 下载谷歌提供的c测试库在VsCode中安装抖音AI大模型找到c项目文件夹&#xff0c;使用VsCode和VS进行双开生成gtest代码进行c单例测试 下载谷歌提供的c测试库 在谷歌浏览器搜索github gtest, 第…

Pycharm,2024最新版Pycharm现在安装环境配置汉化详细教程!

码&#xff08;文末附带精品籽料&#xff09;&#xff1a; K384HW36OBeyJsaWNlbnNlSWQiOiJLMzg0SFczNk9CIiwibGljZW5zZWVOYW1lIjoibWFvIHplZG9uZyIsImxpY2Vuc2VlVHlwZSI6IlBFUlNPTkFMIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IiIsIm…

【论文分享】TensorTEE 24‘ASPLOS

目录 AbstractIntroductionContribution BackgroundCollaborative ComputingLLM CPU-NPU collaborative computing Memory ProtectionMemory encryption Integrity verificationHeterogeneous NPU TEEIntegrated NPU TEEDiscrete NPU TEE Threat Model MotivationInefficient C…

力扣每日一题合集

3211. 生成不含相邻零的二进制字符串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<string> validStrings(int n) {vector<string> ans;ans.emplace_back("0");ans.emplace_back("1");for(int i 1; i < n; i)…

Vue3 中实现过渡动画的几种方式?

前言 首先抛开 vue 本身&#xff0c;假设需要给某个 Dom 元素实现一些过渡动画&#xff0c;那么下面这些事是必须的&#xff1a; 实现目标元素不同时刻下的样式&#xff0c;常见做法就是抽取在不同的 css 选择器中根据不同时刻切换不同的 css 选择器以达到样式的变化设置样式…

Linux 中,flock 对文件加锁

在Linux中&#xff0c;flock是一个用于对文件加锁的实用程序&#xff0c;它可以帮助协调多个进程对同一个文件的访问&#xff0c;避免出现数据不一致或冲突等问题。以下是对flock的详细介绍&#xff1a; 基本原理 flock通过在文件上设置锁来控制多个进程对该文件的并发访问。…

【华为HCIP实战课程二十七】中间到中间系统协议IS-IS Hello报文,网络工程师

一、IS-IS术语 1、IIH: ISIS hello 报文,相当于OSPF的Hello报文,hello-interval 10s, hold-time 30s 2、LSP:链路状态数据单元,类似OSPF的LSA,携带路由信息(L1和L2的LSP) 3、SNP:系列号PDU (1)、PSNP:部分序列号协议数据单元,类似OSPF的ACK,Request (2)、CSNP:…

python-opencv给图片或视频去水印

文章目录 引言inpaint函数的使用方法鼠标事件回调函数cv2.setMouseCallback介绍去水印步骤实现代码 引言 本文主要基于cv2.inpaint函数实现图片的水印去除。 inpaint函数基于图像修复算法&#xff0c;通过对缺陷区域周围像素的分析和插值&#xff0c;生成合适的像素值来填充缺…

渗透测试-百日筑基—文件上传篇特征截断渲染%00绕过——下篇

目录 day10-渗透测试文件上传篇&绕过&特征&截断&渲染 一、黑名单大小写绕过代码分析 1、获取文件后缀名进行判断&#xff0c;如果后缀在这个字典里就禁止上传。 2、黑名单大小写绕过攻击 二、利用 windows 系统特征绕过上传 1、windows 系统特征绕过漏洞…