控件概念
一个图形化界面上的内容,在编写代码的时候不需要全部从零开始实现。Qt种已经提供了很多内置的控件(按钮、文本框、单选按钮、复选按钮、下拉框等等),直接进行使用即可。
控件,英文名称widget,控件是界面上的各种元素的“统称”。
在Qt Designed左侧这一长条,就是Qt已经内置好的控件了。
控件的发展历程
控件是 GUI 开发中的通⽤概念.,不仅仅局限在 Qt里。
第一个阶段
完全没有控件. 此时需要通过⼀些绘图 API ⼿动的绘制出按钮或者输⼊框等内容, 代码编写繁琐。
开发GUI界面上显示出来的东西,全部都可以看作是“画”出来的。
显示器显示的内容,可以理解成“画布”,操作系统,就可以提供一些API,让你在画布上进行画点、线、矩形或者填充各种颜色等等。此时,开发一个图形化界面的程序,就相当于先画一个窗口(矩形)。
例如:文曲星,当时有很多的开发者就是基于这个平台开发了很多的程序。
第二个阶段
控件的概念被逐渐被引入,但是早期的控件比较简单,数量比较有限,例如HTML,就包含很多标签,不同的标签具有不同的效果。图形,链接,输入框,按钮。
第三个阶段
随着时代的发展,新的GUI开发体系越来越丰富,提供的控件数量、质量越来越提示了。
整体来说,种类和效果都大幅度提示。
Qt的控件虽然很多,但是整体来说,颜值还是比更现代的控件体系要更逊色一点。但是Qt Designer中展示的控件都是默认的样子,Qt还提供了一些优化手段,可以让控件变得更好看。
例如Qt近几年提供的Qt Design Studio所制作出来的界面美观程度就是业界最领先的一档。
QWidget核心属性
Qt中各种控件都是继承自QWidget类,可以说QWidget就包含了Qt整个控件体系中通用的部分。
在Qt Creator右侧,可以看到QWidget的各种属性,并且也能直接在右侧进行编辑,这里的各种属性都可以通过Qt的文档进行了解。但是里面的内容较多,不需要每一个都去仔细钻研,只需要认识其中比较常用,比较重要的属性即可。
属性 | 作用 |
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 的可访问名称. 这个名称可以被辅助技术 (像屏幕阅读器) 获取到. 这个属性⽤于实现⽆障碍程序的场景中 (也就是给盲⼈写的程序). PS: 其实盲⼈也是可以使⽤电脑和⼿机的. 甚⾄盲⼈还能成为程序猿. 参⻅ |
accessibleDescripti on |
设置 widget 的详细描述. 作⽤同 accessibleName |
inputMethodHints |
针对输⼊框有效, ⽤来提⽰⽤⼾当前能输⼊的合法数据的格式. ⽐如只能输⼊数字, 只能 输⼊⽇期等. |