【Qt秘籍】[010]-Qt常用控件

    一、控件概述    

        在GUI(图形用户界面)开发领域,Qt无疑是众多开发者心中的首选框架之一。它不仅跨平台、功能强大,而且拥有丰富且灵活的控件库,使得开发者能够快速构建美观、高效的用户界面。对于初学者而言,掌握Qt的常用控件是踏上GUI开发之旅的第一步。

        当我们打开widget.ui,里面有琳琅满目的控件。

        

        因此,学习Qt的重要任务之一是熟悉和掌握Qt的内置通用控件,这些控制对于我们快速开发满足我们需求的接口至关重要 !

    二、QWidget 的核心属性 

        在Qt中,使QWidget类表成为“控件”。特定的控件类,如按钮、视图、输入框、滚动条等,都是继承的QWidget。


可以说,QWidget包含了整个Qt控制系统的公共部分!

问题:

为什么Qt中大部分控件都继承自QWidget类?

回答:

        在Qt中,大部分控件都继承自QWidget类,这是因为QWidget作为Qt控件系统的基础类,提供了一系列核心功能和特性,使得其派生类能够具备构建复杂用户界面的基本能力:

  1. 统一接口QWidget提供了一套统一的接口和方法,比如事件处理、布局管理、绘制和重绘机制、尺寸策略等。这确保了所有基于QWidget的控件在行为上具有一致性,降低了学习和使用的难度。
  2. 事件驱动模型QWidget实现了事件驱动模型,这意味着所有的用户交互(如鼠标点击、键盘输入)都被转换为事件,由QWidget及其派生类处理。这种设计简化了控件的响应机制,使得开发者可以专注于业务逻辑而不是底层细节。
  3. 布局管理QWidget支持布局管理器(如QBoxLayout, QGridLayout),这使得控件能够自动调整大小和位置,适应不同的窗口尺寸,从而实现响应式设计。
  4. 绘画系统QWidget提供了绘画系统,允许控件自定义其外观。通过重写paintEvent()函数,开发者可以精细控制控件的视觉呈现,实现定制化的UI效果。
  5. 信号与槽机制QWidget是Qt信号与槽机制的一部分,这使得控件之间的通信变得简单直接。通过连接信号和槽,可以轻松实现控件间的事件传递和响应。
  6. 属性系统QWidget支持属性系统,允许控件具有可读写的状态,便于数据绑定和动态更新界面。

        因此,通过继承QWidget,Qt中的控件不仅获得了丰富的功能和行为,还能保持高度的一致性和可扩展性。这种设计思想体现了Qt框架的强大和灵活性,也是其成为流行跨平台GUI开发工具的关键因素之一。

常用属性一览:

【Qt知识】部分QWidget属性表格-CSDN博客

重要属性归纳:

1.enabled

        在Qt中,QWidget类提供了enabled属性,但实际上,QWidget使用isEnabled()setEnabled(bool)成员函数来操作这个属性。以下是这些API的详细表格形式:

方法名

描述

isEnabled()

返回一个布尔值,指示控件是否启用。如果控件被禁用,它将不会接收任何事件,也不会参与布局计算。

setEnabled()

这是一个重载的方法,基本形式是void setEnabled(bool enable);。它用于设置控件是否启用。传入true启用控件,传入false禁用控件。

        使用这些函数,你可以控制控件的交互状态,例如:

// 获取当前控件的启用状态
bool isEnabled = widget->isEnabled();// 启用控件
widget->setEnabled(true);// 禁用控件
widget->setEnabled(false);

        禁用控件时,通常会改变控件的外观,使其看起来不可交互,例如灰暗的颜色和可能的视觉提示。这有助于向用户传达控件当前无法使用的信息。

   QWidgetenabled属性(通过isEnabled()setEnabled(bool)访问)是控制用户界面元素交互性的一个关键部分,特别是在设计响应用户动作的动态界面时。

2.geometry

        QWidget中的geometry属性涉及到了控件的位置和大小信息,这是通过一组相关的方法来访问和修改的。下面是与geometry相关的API列表,以表格形式展示:

方法名描述
geometry()返回一个QRect对象,包含了控件的位置(x, y)和大小(宽度,高度)。
x()返回控件左上角的x坐标。
y()返回控件左上角的y坐标。
width()返回控件的宽度。
height()返回控件的高度。
pos()返回一个QPoint对象,表示控件左上角的位置。
size()返回一个QSize对象,表示控件的大小。
setGeometry()设置控件的位置和大小。参数为(int x, int y, int width, int height),分别对应控件的新位置和新大小。
move()移动控件到新的位置。参数为(int x, int y)(const QPoint &pos),指定控件左上角的新位置。
resize()改变控件的大小。参数为(int width, int height)(const QSize &size),分别对应新的宽度和高度。
setX()设置控件左上角的x坐标。
setY()设置控件左上角的y坐标。
setWidth()设置控件的宽度。
setHeight()设置控件的高度。

通过这些方法,你可以精确控制`QWidget`及其子类的位置和大小,这对于布局管理和动态调整界面非常有用。例如,你可以根据屏幕尺寸或用户操作动态调整控件的位置和大小,实现响应式设计。

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

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

相关文章

GitLab代码导出 gitlab4j-api 实现

目录 GitLab简介 GitLab 的主要特点包括: GitLab代码导出 gitlab4j-api 添加 gitlab4j-api 依赖 使用 gitlab4j-api 获取特定命名空间下的所有项目 说明 注意事项 GitLab简介 GitLab 是一个开源的代码仓库和协作平台,主要用于版本控制和源代码管理…

深度剖析整型和浮点型数据在内存中的存储(C语言)

目录 整型在内存中的存储 为什么整型在内存中存储的是补码? 大小端字节序 为什么有大端小端? 浮点型家族 浮点数在内存中的存储 long long 整型在内存中的存储 整型在内存中有三种二进制表示形式:原码,反码,补码…

Github 2024-06-10开源项目周报 Top15

根据Github Trendings的统计,本周(2024-06-10统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目8Jupyter Notebook项目2Go项目2C++项目1Shell项目1Lua项目1JavaScript项目1MDX项目1C项目1HTML项目1Python - 100天从新手到大师 创建…

关于目前ggrcs包的报错解决方案

目前有不少粉丝私信我说使用ggrcs包出现如下错误 我查看了一下,目前报错来源于新版本后的RMS包,主要是预测函数的报错,这个只能等R包作者来修复这个错误。目前需要急用的话,我提供了一个方案,请看下面视频操作 关于目前…

GEE训练教程——如何确定几何形状的中心点坐标和相交的坐标

简介 在GEE中,可以使用.geometry()方法来获取几何形状的中心点坐标和相交的坐标。 首先,使用.geometry()方法获取几何形状的几何信息,然后使用.centroid()方法获取几何形状的中心点坐标。示例代码如下: // 获取几何形状的中心点…

使用Puppeteer生成echarts图片

Puppeteer简介 Puppeteer 是一个用于控制 Headless Chrome 或 Chromium 浏览器的 Node.js 库。它提供了一个高层次的 API,能够让你以编程方式操作浏览器,从而实现自动化任务,比如生成页面截图和 PDF、抓取网页内容、自动化表单提交、UI 测试…

快速测试 Mybatis 复杂SQL,无需启动 Spring

快速测试mybatis的sql 当我们写完sql后,我们需要测试下sql是否符合预期,在填入各种参数后能否正常工作,尤其是对于复杂的sql。 一般我们测试可能是如下的代码: 由于需要启动spring,当项目较大的时候启动速度很慢,有些…

[Kubernetes] 容器运行时 Container Runtime

文章目录 1.容器运行时(Container Runtime)2.容器运行时接口3.容器运行时层级4.容器运行时比较5.强隔离容器6.K8S为何难以实现真正的多租户 1.容器运行时(Container Runtime) Container Runtime 是运行于 k8s 集群每个节点中,负责容器的整个生命周期。Docker 就目前…

Golang发送邮件如何验证身份?有哪些限制?

Golang发送邮件需要哪些库?怎么设置邮件发送的参数? 对于开发者而言,使用Golang发送邮件是一种常见需求。然而,在发送邮件的过程中,验证身份是一个至关重要的环节,它确保了邮件的可靠性和安全性。A将探讨G…

bitset用法

参考:https://blog.csdn.net/weixin_45697774/article/details/105563993 题目:https://leetcode.cn/problems/maximum-total-reward-using-operations-ii/description/ class Solution { public:int maxTotalReward(vector<int>& rewardValues) {bitset<10000…

三极管十大品牌

三极管十大品牌-三极管品牌-晶体三极管哪个品牌好-Maigoo品牌榜

【面试干货】 B 树与 B+ 树的区别

【面试干货】 B 树与 B 树的区别 1、B 树2、 B 树3、 区别与优缺点比较4、 总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在数据库系统中&#xff0c;B 树和 B 树是常见的索引结构&#xff0c;它们在存储和组织数据方面有着不同的设计…

SAS:coalescec函数和cmiss函数的应用及拓展

背景&#xff1a;CRF中收集了每个受试者3个RACE方面的信息&#xff0c;SDTM SPEC规定了RACE的生成规则为&#xff1a;若收集了多个RACE&#xff0c;RACE“MULTIPLE”&#xff0c;详细的RACE信息记录在SUPPDM中&#xff1b;若仅收集到一个RACE&#xff0c;则RACE等于RACE1-RACE3…

LabVIEW 用于 MES 系统和卡钳上位机检测

LabVIEW 确实可以用于制造执行系统&#xff08;MES&#xff09;的开发以及卡钳上位机检测。以下是详细说明&#xff1a; 使用 LabVIEW 开发 MES 系统 数据采集与处理&#xff1a;LabVIEW 擅长实时数据采集和处理&#xff0c;可以连接多种传感器和设备&#xff0c;获取生产线上…

PyTorch学习7:加载数据集

文章目录 前言一、epoch&#xff0c;batch-size和iteration二、示例1.说明2.代码示例 总结 前言 介绍PyTorch中加载数据集的相关操作。Dataset和DataLoader 一、epoch&#xff0c;batch-size和iteration epoch&#xff1a;所有训练数据完成一次前馈和反馈 batch-size&#x…

[大模型]Gemma-2B-Instruct FastApi 部署调用

环境准备 在 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu22.04)-->12.1。 接下来打开刚刚租用服务器的 JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下载和运行演示。 pip 换源加速下载…

Android AOSP定制去掉Google搜索栏

Android AOSP定制去掉Google搜索栏 1.前言&#xff1a; ​ 最近接触了Android系统定制的需求&#xff0c;感觉非常有意思&#xff0c;之前做过Launcher和串口&#xff0c;也自己安装过虚拟机&#xff0c;不过几年没用Linux系统了有点不习惯&#xff0c;Linux命令也不熟悉&…

SpringBoot实现图片文件上传和回显的两种方式

目录 一 功能需求 二 上传本地 2.1 实现文件上传的controller层 2.2 图片访问资源映射 二 上传OSS 一 功能需求 实现图片的上传和回显功能其实在业务中是非常常见的,比如需要上传头像,或者交易平台需要上传物品的图片等等,都需要上传和回显,所以我接下来给大家介绍两种…

Java集合汇总

Java中的集合框架是Java语言的核心部分&#xff0c;提供了强大的数据结构来存储和操作对象集合。集合框架位于java.util包中&#xff0c;主要可以分为两大类&#xff1a;Collection&#xff08;单列集合&#xff09;和Map&#xff08;双列集合&#xff09;。下面是对它们的总结…

快速开始一个go程序(极简-快速入门)

一、 实验介绍 1.1 实验简介 为了能更高效地使用语言进行编码&#xff0c;Go 语言有自己的哲学和编程习惯。Go 语言的设计者们从编程效率出发设计了这门语言&#xff0c;但又不会丢掉访问底层程序结构的能力。设计者们通过一组最少的关键字、内置的方法和语法&#xff0c;最终…