说一说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设置窗口的标志,决定窗口的行为和外观。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

圆柱形腔体谐振器理论分析-20241027

圆柱形腔体谐振器 谐振电路在电子工程中起着非常重要的作用。在低频段&#xff0c;谐振电路通常由集总参数的电感和电容构成&#xff0c;即为LC谐振电路&#xff0c;其品质因数通常为数百。当频率升高到微波频段时&#xff0c;电路的尺寸与电磁波的波长可以比拟&#xff0c;集…

微信小程序——消息订阅

首先用到的就是wx.requestSubscribeMessage接口。 注意&#xff1a;用户发生点击行为或者发起支付回调后&#xff0c;才可以调起订阅消息界面 requestSubscribeMessage() {uni.requestSubscribeMessage({tmplIds: [],//需要订阅的消息模板的id的集合&#xff0c;一次调用最多可…

vscode配色主题与图标库推荐

vscode配色主题推荐:Andromedavsocde图标库&#xff1a; vscode-icons Andromeda Dark theme with a taste of the universe 仙女座&#xff1a;一套宇宙深空体验的哑暗色主题; 高对比度,色彩饱和; Easy Installation Open the extensions sidebar on Visual Studio CodeSear…

arm架构 ubuntu 部署docker

如果有旧版本需要卸载 sudo apt remove docker docker-engine docker-ce docker.io 安装依赖包 sudo apt update && apt install -y apt-transport-https ca-certificates curl software-properties-common 添加docker秘钥 阿里云 curl -fsSL http://mirrors.aliyu…

Java应用程序的测试覆盖率之设计与实现(三)-- jacoco cli 客户端

一、背景 上文已把覆盖率数据采集好了,并提供远程连接的tcp地址及端口。 jacoco cli文档jacoco cli jar包jacococli.jar 我下载好了,放在github工程里。 本文主要是介绍如何使用jacoco cli 客户端读取并生成覆盖率报告。 二、使用 1、dump覆盖率统计 java -jar doc/jacoc…

基于java的山区环境监督管理系统(源码+定制+开发)环境数据可视化、环境数据监测、 环境保护管理 、污染防治监测系统 大数据分析

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

双子塔楼宇可视化系统:提升建筑管理与运营效率

利用图扑可视化技术对双子塔楼宇的各项功能进行实时监控和管理。通过数据分析优化资源配置&#xff0c;提高能源效率&#xff0c;增强楼宇安全性&#xff0c;实现智能化运营。

提示工程(Prompt Engineering)指南(进阶篇)

在 Prompt Engineering 的进阶阶段&#xff0c;我们着重关注提示的结构化、复杂任务的分解、反馈循环以及模型的高级特性利用。随着生成式 AI 技术的快速发展&#xff0c;Prompt Engineering 已经从基础的单一指令优化转向了更具系统性的设计思维&#xff0c;并应用于多轮对话、…

在GeoTools中的Shapefile属性表读取效率之Shp与Dbf对比

目录 前言 一、POI测试数据简介 1、选用的POI数据 2、关于数据的属性数据 二、属性数据读取的两种方式实现 1、基于DbaseFileReader的读取 2、基于SimpleFeatureSource的读取 三、实际运行对比 1、内存和CPU占用情况 2、运行耗时情况 四、总结 前言 众所周知&#x…

创建型模式-----建造者模式

目录 背景&#xff1a; 构建模式UML 代码示例 房子成品&#xff1a; 构建器抽象&#xff1a; 具体构建器&#xff1a; 建筑师&#xff1a; 测试部…

从蚂蚁金服面试题窥探STW机制

背景 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;垃圾回收&#xff08;GC&#xff09;是一个至关重要的机制&#xff0c;它负责自动管理内存的分配和释放。然而&#xff0c;垃圾回收过程并非没有代价&#xff0c;其中最为显著的一个影响就是STW&#xff08;Stop-T…

跟着鸟儿学飞行?扑翼机器人的感知秘籍

大家好&#xff01;今天来了解一篇扑翼机器人的研究——《Avian-inspired embodied perception in biohybrid flapping-wing robotics》发表于《Nature Communications》。在广阔天空中&#xff0c;鸟类凭借精妙翅膀结构与敏锐感知自由翱翔&#xff0c;这一直吸引着科学家探索其…

从数据中台到数据飞轮:实现数据驱动的升级之路

从数据中台到数据飞轮&#xff1a;实现数据驱动的升级之路 随着数字化转型的推进&#xff0c;数据已经成为企业最重要的资产之一&#xff0c;企业普遍搭建了数据中台&#xff0c;用于整合、管理和共享数据&#xff1b;然而&#xff0c;近年来&#xff0c;数据中台的风潮逐渐减退…

django(3)jinja2模版的使用

启动模版 安装jinja2 pip install jinja2 配置setting TEMPLATES中添加配置 {BACKEND: django.template.backends.jinja2.Jinja2,DIRS: [os.path.join(BASE_DIR,jinja2)], #模版在项目中的所在位置} template中各项的含义 这个配置项中模版自上而下加载&#xff0c;重名…

工具学习_Cobalt Strike

1. Cobalt Strike 概述 Cobalt Strike 是一款基于 java 的渗透测试神器&#xff0c;常被业界人称为 CS 神器。自 3.0 以后已经不在使用 Metasploit 框架而作为一个独立的平台使用&#xff0c;分为客户端与服务端&#xff0c;服务端是一个&#xff0c;客户端可以有多个&#xf…

表格编辑demo

<el-form :model"form" :rules"status ? rules : {}" ref"form" class"form-container" :inline"true"><el-table :data"tableData"><el-table-column label"计算公式"><templat…

API 接口管理 架构 api接口设计

提供给第三方的业务接口应该如何设计呢&#xff1f;需要从哪些方面考虑&#xff1f;以及如何实现这些方面&#xff1f; 1、标准化 RESTful 2、安全性 1&#xff09;请求token&#xff08;防止接口被第三方调用&#xff09; token作为调用系统的凭证。token可以设置一次有效&…

UML 总结(基于《标准建模语言UML教程》)

定义 UML 又称为统一建模语言或标准建模语言&#xff0c;是一种标准的图形化建模语言&#xff0c;它是面向对象分析与设计的一种标准表示。尽管UML 本身没有对过程有任何定义&#xff0c;但UML 对任何使用它的方法&#xff08;或过程&#xff09;提出的要求是&#xff1a;支持用…

Linux初阶——信号

一、预备 1、信号的处理方式 1.1. 默认动作 当收到一个信号时&#xff0c;就执行这个信号的默认动作。 1.2. 忽略 当收到一个信号时&#xff0c;就忽略执行这个信号的默认动作。 1.3. 自定义动作 当收到一个信号时&#xff0c;就执行信号的自定义动作。 2、硬件中断 你…

IT监控对接华三CAS云管平台监控方案

概述 CAS云管平台是新华三集团自主研发的虚拟化和云计算管理平台&#xff0c;它主要面向数据中心&#xff0c;提供虚拟化和云计算管理&#xff0c;在教育行业、网络安全领域、高性能计算业务、企业IT部门等领域被广泛应用。在信创国产化背景下&#xff0c;以CAS、Fusion等为代…