说一说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,一经查实,立即删除!

相关文章

刘艳兵-DBA015-对于属于默认undo撤销表空间的数据文件的丢失,哪条语句是正确的?

对于属于默认undo撤销表空间的数据文件的丢失&#xff0c;哪条语句是正确的&#xff1f; A 所有未提交的交易都将丢失。 B 数据库实例中止。 C 数据库处于MOUNT状态&#xff0c;需要恢复才能打开。 D 数据库保持打开状态以供查询&#xff0c;但除具有SYSDBA特权的用…

如何精准选择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 工…

go语言回调函数的使用

前言 在 Go 语言中&#xff0c;回调函数是一种将一个函数作为参数传递给另一个函数&#xff0c;在特定的事件发生时被调用的编程模式。 一、回调函数的定义 type OnTaskHandler func(r []byte)type remoteTaskClient struct {sync.RWMutexonTask OnTaskHandler } 以上定义了…

Kubernetes(k8s)挂载hostPath和emptyDir两种volume的区别

Kubernetes挂载可以指定多种类型的volume&#xff0c;这篇文章聊一下hostPath和emptyDir两种volume的区别。 hostPath类型是将宿主机的目录或者文件挂载到容器中&#xff0c;这样容器写入和读取的数据是直接反映在宿主机上的&#xff0c;这种方式产生的数据可以在不同pod之间共…

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…

Typora 、 Minio and PicGo 图床搭建

流程介绍 本地安装Typora笔记工具拥有一台装有docker的服务器配置minio云图床管理控制页面下载PicGo上传工具服务器Docker环境搭建—Ubuntu系统 删除旧docker的所有依赖(非root用户) # 删除docker及安装时自动安装的所有包 sudo apt-get autoremove docker docker-ce docker…

【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是一种常用…

一篇万字文章带你快速上手MySQL中表的增删查改操作

1. 创建–CREATE 1.1 基本使用方法 语法&#xff1a; CREATE TABLE table_name (column1 datatype [constraints],column2 datatype [constraints],... );table_name: 要创建的表的名称。column1, column2, …: 表中的列名。datatype: 列的数据类型&#xff0c;如 INT, VARC…

预览 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…

django模板出现:‘WSGIRequest‘ object has no attribute ‘Get‘错误

request.GET是一个 QueryDict 类型对象&#xff0c;类似于字典&#xff0c;每个键中可以包含多个值&#xff0c;它能够获取所有GET的请求参数 但在获取参数之前&#xff0c;需要先判断所请求的参数是否存在&#xff0c;否则就会出现以下错误&#xff1a;WSGIRequest object has…