【Qt 学习笔记】Qt控件概述


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt控件概述

文章编号:Qt 学习笔记 / 14

文章目录

  • Qt控件概述
    • 一、控件概述
    • 二、控件的发展史
      • 1. 控件三个阶段
      • 2. 各控件的作用
    • 三、控件属性概览
      • 1. QWidget属性及作用


一、控件概述

控件(Widget)是指用于图形用户界面(GUI)的可视化元素,通过与用户的交互来显示信息、接收输入或触发操作。控件通常由一个可视化的图标、按钮或者其他视觉元素以及与之相关联的事件处理函数组成。

控件可以接受用户的输入,例如按钮可以通过鼠标点击或者键盘操作来触发相关的事件。控件还可以显示信息,例如标签可以显示文本、图像或者其他数据。控件的外观和行为可以通过设置属性或者调用方法来进行定制和修改。

常见的控件包括按钮、文本框、标签、下拉菜单、滚动条等。控件可以单独使用,也可以组合在一起形成复杂的用户界面。控件可以根据需要调整大小、移动位置、隐藏或显示。

Qt 作为⼀个成熟的 GUI 开发框架, 内置了⼤量的常⽤控件,并且 Qt 也提供了 “⾃定义控件” 的能力。在前面的文章中使用到的QPushButton等就属于控件。在Qt Creator中提供了许多控件如下图:
在这里插入图片描述

注意:在学习Qt中掌握这些控件是重要的任务,这些Qt内置的控件可以极大的帮助我们在开发出所需要的界面


二、控件的发展史

控件的发展史可以追溯到计算机用户界面的发展过程。控件的发展史可以看出,随着计算机技术的发展和用户需求的不断变化,控件的功能和形式也在不断演进和创新。控件是 GUI 开发中的通⽤概念,不仅仅局限在 Qt 中。

1. 控件三个阶段

在这里插入图片描述

  • 第一阶段:完全没有控件. 此时需要通过⼀些绘图 API ⼿动的绘制出按钮或者输⼊框等内容, 代码编写繁琐.例如⽂曲星的 Lava 平台开发.
    在这里插入图片描述

  • 第二阶段:只包含粗略的控件. 只是提供了按钮, 输⼊框, 单选框, 复选框等最常⽤的控件.例如 html 的原⽣控件.
    在这里插入图片描述

  • 第三阶段:更完整的控件体系, 基本可以覆盖到 GUI 开发中的⼤部分场景.例如早期的 MFC, VB, C++ Builder, Qt, Delphi, 后来的 Android SDK, Java FX, 前端的各种 UI 库等.
    在这里插入图片描述

2. 各控件的作用

  • 提示符命令行控件:在早期的计算机系统中,用户与计算机之间的主要交互是通过命令行界面。用户通过输入命令来与计算机进行交互,并通过提示符来向计算机提供命令。

  • 文本框和按钮控件:随着个人计算机的出现,图形用户界面开始流行起来。文本框和按钮控件成为用户与计算机进行交互的基本元素。用户可以在文本框中输入文本,并通过按钮来执行特定的操作。

  • 下拉列表和复选框控件:为了提供更多的选择和选项,下拉列表和复选框控件开始被添加到用户界面中。下拉列表控件允许用户从一个预定义的选项列表中选择一个选项,而复选框控件允许用户从多个选项中选择多个选项。

  • 滑块和进度条控件:随着计算机应用程序的多样化,滑块和进度条控件被添加到用户界面中,以提供更直观的用户体验。滑块控件允许用户选择一个数值或范围,而进度条控件则用于显示任务的进度。

  • 标签和图像控件:为了改善用户界面的可读性和可视化效果,标签和图像控件被引入到用户界面中。标签控件用于显示文本或标识信息,而图像控件则用于显示图像或图形。

  • 菜单和工具栏控件:为了提供更多的功能和选项,菜单和工具栏控件被添加到用户界面中。菜单控件提供了一个层次结构的选项集合,用户可以通过点击菜单项来选择特定的操作。工具栏控件则提供了常用的操作按钮,用户可以通过点击按钮来执行特定的操作。

  • 数据输入和呈现控件:随着计算机应用程序的复杂化,各种数据输入和呈现控件被引入到用户界面中。比如,日期选择器、文件选择器、网格控件等,它们提供了更灵活和高级的数据输入和呈现功能。


三、控件属性概览

在 Qt 中, 使用 QWidget 类表示 “控件”. 像按钮, 视图, 输⼊框, 滚动条等具体的控件类, 都是继承⾃
QWidget.

在Qt 设计界面中,选中一个控件拖拽至界面中,右侧可以看到QWidget中的属性。

这些属性既可以通过 QtDesigner 会直接修改, 也可以通过代码的方式修改.

在这里插入图片描述

1. QWidget属性及作用

属性作用
enabled设置控件是否可使用. true 表示可用, false 表示禁用
geometry位置和尺寸. 包含 x, y, width, height 四个部分.其中坐标是以⽗元素为参考进行设置的.
windowTitle设置 widget 标题
windowIcon设置 widget 图标
windowOpacity设置 widget 透明度
cursor鼠标悬停时显示的图标形状.是普通箭头, 还是沙漏, 还是十字等形状.在 Qt Designer 界面中可以清楚看到可选项.
font字体相关属性.涉及到字体家族, 字体大小, 粗体, 斜体, 下划线等等样式.
toolTip鼠标悬停在 widget 上会在状态栏中显示的提⽰信息.
toolTipDuring toolTip显示的持续时间.
statusTip Widget状态发⽣改变时显示的提⽰信息(比如按钮被按下等).
whatsThis鼠标悬停并按下 alt+F1 时, 显示的帮助信息(显示在⼀个弹出的窗口中).
styleSheet允许使用 CSS 来设置 widget 中的样式.Qt 中⽀持的样式⾮常丰富, 对于前端开发⼈员上⼿是⾮常友好的.
focusPolicy该 widget 如何获取到焦点.
contextMenuPolicy上下文菜单的显示策略.
locale设置语⾔和国家地区.
acceptDrops该部件是否接受拖放操作。如果设置为true,那么该部件就可以接收来⾃其他部件的拖放操作。当⼀个部件被拖放到该部件上时,该部件会接收到相应的拖放事件(如dropEvent)。如果设置为false,那么该部件将不会接收任何拖放操作。
minimumSize控件的最小尺寸. 包含最小宽度和最小高度.
maximumSize控件的最大尺寸. 包含最大宽度和最大高度.
sizePolicy尺寸策略. 设置控件在布局管理器中的缩放方式.
windowModality指定窗口是否具有 “模态” 行为.
sizeIncrement拖动窗口大小时的增量单位.
baseSize窗口的基础大小, 用来搭配 sizeIncrement 调整组件尺寸是计算组件应该调整到的合适的值.
palette调色板. 可以设置 widget 的颜色风格.
mouseTracking是否要跟踪鼠标移动事件.如果设为 true, 表示需要跟踪, 则鼠标划过的时候该 widget 就能持续收到鼠标移动事件.如果设为 false, 表示不需要跟踪, 则鼠标划过的时候 widget 不会收到鼠标移动事件, 只能收到鼠标按下或者释放的事件.
tabletTracking是否跟踪触摸屏的移动事件.类似于 mouseTracking . Qt 5.9 中引⼊的新属性.
layoutDirection布局方向.
autoFillBackground是否自动填充背景颜色.
windowFilePath能够把 widget 和⼀个本地文件路径关联起来. PS: 其实作用不大.
accessibleName设置 widget 的可访问名称. 这个名称可以被辅助技术 (像屏幕阅读器) 获取到.
accessibleDescription设置 widget 的详细描述. 作用同 accessibleName
inputMethodHints针对输⼊框有效, 用来提示用户当前能输⼊的合法数据的格式. 比如只能输⼊数字, 只能输⼊⽇期等

在这里插入图片描述

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

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

相关文章

什么是面向对象思想?

面向对象不是一种技术,而是一种思想。它指导我们以什么形式组织代码,以什么思路解决问题。 面向对象编程,是一种通过对象方式,把现实世界映射到计算机世界的编程方法。 面向对象解决问题的思路:把构成问题的事物分解成…

【数据结构与算法】搜索算法(深度优先搜索 DFS和广度优先搜索 BFS)以及典型算法例题

目录 搜索算法(深度优先搜索DFS和广度优先搜索BFS)以及典型算法例题深度优先搜索 (Depth First Search 简称 DFS)DFS 的设计步骤深度优先搜索(DFS)算法例题例题一:N皇后问题例题二:路…

国内开通gpt会员方法

ChatGPT镜像 今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用ChatGPT吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像…

配置DHCP服务器实现为动态客户端和静态客户端分配不同网络参数

相关学习推荐:什么是DHCP?为什么要使用DHCP? 华为HCIP课程【视频教程】:华为HCIP必考题:DHCP协议原理与配置 组网需求 如图1所示,Router作为企业出口网关,PC和IP Phone为某办公区办公设备。为了方便统一管…

Docker部署WebRTC-Streamer

文章目录 WebRTC-Streamer概述Docker部署WebRTC-StreamerVue使用WebRTC-Streamer一些问题 WebRTC-Streamer概述 WebRTC-Streamer是一个基于WebRTC技术的流媒体传输工具,它可以通过Web浏览器实现实时音视频流的传输和播放。它提供了一种简单而强大的方式&#xff0c…

Appium的使用:混合APP切换上下文

网上别的文章说要把移动端的webview设置成调试模式,才能看到下图信息。 但我这里是直接在Android Studio新建了一个空白活动,然后放的webview控件,写的webview代码,直接部署到模拟器上,在确定adb可以连接到模拟器后,在桌面浏览器输入chrome://inspect/#devices后就可以看…

分布式存储系统Megastore

文章目录 说明设计目标及方案选择数据的分区和复制 数据模型照片共享服务数据模型实例Megastore索引Bigtable中存储情况 事务及并发控制Megastore提供的三种读Megastore的写操作完整的事务周期 Megastore基本架构快速读与快速写 核心技术之复制复制的日志数据读取数据写入协调者…

小米温度计接入HA后,手机米家app里温度计就看不到温度数值了

环境: 小米温度计 HA OS Core 2023.12.1 Supervisor 2024.04.0 Operating System 11.1 问题描述: 小米温度计接入HA后,手机米家app里和HA里面温度计就看不到温度数值了 解决方案: 1.前往米家APP,解绑温度计和本地…

全局代理导致JetBrains IDE CPU占用高,jdk.internal.net.http.common

GoLand版本:2022.3.4 解决办法: 使用SOCKS代理代替HTTP代理 禁用Space和Code With Me插件 禁用 TLS V1.3,参考:https://stackoverflow.com/questions/54485755/java-11-httpclient-leads-to-endless-ssl-loop 参考 https://…

vue快速入门(二十三)侦听器的简单写法与完整写法

注释很详细&#xff0c;直接上代码 上一篇 新增内容 侦听器简单写法侦听对象或属性侦听器完整写法侦听对象&#xff08;可选深度侦听&#xff09; 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name…

五子棋:不会下五子棋也没关系,会用Java写五子棋就行

关注公号“微澜网络”获取完整源代码&#xff01; 效果展示&#xff1a; 目录 效果展示&#xff1a; 导语&#xff1a; 游戏介绍&#xff1a; 程序设计&#xff1a; 1.游戏规则和功能&#xff1a; 2.用户界面设计&#xff1a; 3.程序架构设计&#xff1a; 4.可扩展性和灵…

64B/66B编码

一、前言 8B/10B编码主要作用的优化直流平衡&#xff0c;从8bit中插2个bit进去&#xff0c;这样的话最终效果能够使长0或者长1的位数不超过5位&#xff0c;达到很好的效果。但是由于8B/10B编码的带宽利用率非常低&#xff0c;10G的带宽只有8G在传输有效数据&#xff0c;2G的带…

【高录用-快速见刊】2024年数字化经济与金融创新国际学术会议(ICDEFI 2024)

会议简介 2024年数字经济与金融创新国际学术会议即将召开。此次会议旨在汇集全球数字经济与金融创新领域的专家学者&#xff0c;共同探讨数字经济的发展趋势以及金融创新的路径。与会者将分享前沿研究成果&#xff0c;讨论数字技术在金融领域的应用与创新&#xff0c;并推动数…

一篇文章了解php7和php8新特性

PHP7新特性 ?? 运算符 php7以前用三目判断变量是否存在或是否为空 $a isset($_GET[a]) ? $_GET[a] : 1;php7新增null 合并运算符??快捷判断 $a $_GET[a] ?? 1;函数返回值类型声明 用:返回值类型的形式定义函数的返回值类型 <?phpdeclare(strict_types1); fun…

Unity DOTS1.0(4) Baking 和 Baker

Baking 概念&#xff1a; 把Editor中的GameObject数据转换成entities数据写入到Entity Scens里面,这个过程我们叫做BakingBaking是一种不可逆的操作&#xff0c;把低效代价昂贵的但是灵活的GameObjects转换成性能高效的Entities与Components。 作用&#xff1a; 在传统的模…

MyBatis批量插入的五种方式

MyBatis批量插入的五种方式: 一、准备工作 1、导入pom.xml依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MySQL驱动依赖 --…

vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅱ)搜索及数据获取配置项

github求⭐ vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例&#xff08;Ⅰ&#xff09;配置项文档 vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例&#xff08;Ⅱ&#xff09;搜索…

什么是享元模式,有哪些具体应用

一、定义 享元模式是一种通过尽可能多地共享数据来最小化内存使用和对象数量&#xff0c;从而提高性能的设计模式。在享元模式中&#xff0c;如果需要相同数据的多个对象&#xff0c;则共享这些对象而不是创建新的对象&#xff0c;从而提高系统的效率。 其实有很多应用场景&am…

数据库(1)

目录 1.什么是事务&#xff1f;事务的基本特性ACID&#xff1f; 2.数据库中并发一致性问题&#xff1f; 3.数据的隔离等级&#xff1f; 4.ACID靠什么保证的呢&#xff1f; 5.SQL优化的实践经验&#xff1f; 1.什么是事务&#xff1f;事务的基本特性ACID&#xff1f; 事务指…

Alibaba --- 如何写好 Prompt ?

如何写好 Prompt 提示工程&#xff08;Prompt Engineering&#xff09;是一项通过优化提示词&#xff08;Prompt&#xff09;和生成策略&#xff0c;从而获得更好的模型返回结果的工程技术。总体而言&#xff0c;其实现逻辑如下&#xff1a; &#xff08;注&#xff1a;示例图…