- 关注博主,后期持续更新系列文章
- 如果有错误感谢请大家批评指出,及时修改
- 感谢大家点赞👍收藏⭐评论✍
Qt控件概述
文章编号:Qt 学习笔记 / 14
一、控件概述
控件(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 | 针对输⼊框有效, 用来提示用户当前能输⼊的合法数据的格式. 比如只能输⼊数字, 只能输⼊⽇期等 |