【Qt】控件介绍

 控件概念

        一个图形化界面上的内容,在编写代码的时候不需要全部从零开始实现。Qt种已经提供了很多内置的控件(按钮、文本框、单选按钮、复选按钮、下拉框等等),直接进行使用即可。

        控件,英文名称widget,控件是界面上的各种元素的“统称”。

在Qt Designed左侧这一长条,就是Qt已经内置好的控件了。

控件的发展历程

控件是 GUI 开发中的通⽤概念.,不仅仅局限在 Qt里。

第一个阶段

        完全没有控件. 此时需要通过⼀些绘图 API ⼿动的绘制出按钮或者输⼊框等内容, 代码编写繁琐。
开发GUI界面上显示出来的东西,全部都可以看作是“画”出来的。
        显示器显示的内容,可以理解成“画布”,操作系统,就可以提供一些API,让你在画布上进行画点、线、矩形或者填充各种颜色等等。此时,开发一个图形化界面的程序,就相当于先画一个窗口(矩形)。

例如:文曲星,当时有很多的开发者就是基于这个平台开发了很多的程序。 

第二个阶段

控件的概念被逐渐被引入,但是早期的控件比较简单,数量比较有限,例如HTML,就包含很多标签,不同的标签具有不同的效果。<img>图形,<a>链接,<input>输入框,<button>按钮。

第三个阶段

随着时代的发展,新的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 如何获取到焦点。
  • Qt::NoFocus:控件不参与焦点管理,即⽆法通过键盘或⿏标获取焦点
  • Qt::TabFocus:控件可以通过Tab键获得焦点
  • Qt::ClickFocus:控件可以通过⿏标点击获得焦点  
  • Qt::StrongFocus:控件可以通过键盘和⿏标获得焦点
  • Qt::WheelFocus:控件可以通过⿏标滚轮获得焦点(在某些平台或样式中可能不可⽤)
contextMenuPolicy
上下⽂菜单的显⽰策略.
  • Qt::DefaultContextMenu:默认的上下⽂菜单策略,⽤⼾可以通过⿏标右键或键盘快捷键触发上下⽂菜单
  • Qt::NoContextMenu:禁⽤上下⽂菜单,即使⽤⼾点击⿏标右键也不会显⽰菜单
  • Qt::PreventContextMenu:防⽌控件显⽰上下⽂菜单,即使⽤⼾点击⿏标右键也不会显⽰菜单
  • Qt::ActionsContextMenu:将上下⽂菜单替换为控件的“动作”菜单,⽤⼾可以通过⿏标右键或键盘快捷键触发这个菜单
  • Qt::CustomContextMenu:使⽤⾃定义的上下⽂菜单,⽤⼾可以通过⿏标右键或键盘快捷键触发这个菜单
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
布局⽅向.
  • Qt::LeftToRight:⽂本从左到右排列,也是默认值。
  • Qt::RightToLeft:⽂本从右到左排列。
  • Qt::GlobalAtomics:部件的布局⽅向由全局原⼦性决定(PS 这个翻译其实有点尴尬. 其实就是根据应⽤程序中的其他 widget 布局⽅向确定的).
autoFillBackground
是否⾃动填充背景颜⾊.
windowFilePath
能够把 widget 和⼀个本地⽂件路径关联起来. PS: 其实作⽤不⼤.
accessibleName
设置 widget 的可访问名称. 这个名称可以被辅助技术 (像屏幕阅读器) 获取到.
这个属性⽤于实现⽆障碍程序的场景中 (也就是给盲⼈写的程序).
PS: 其实盲⼈也是可以使⽤电脑和⼿机的. 甚⾄盲⼈还能成为程序猿. 参⻅
https://www.bilibili.com/video/BV1954y1d7z9
accessibleDescripti
on
设置 widget 的详细描述. 作⽤同 accessibleName
inputMethodHints
针对输⼊框有效, ⽤来提⽰⽤⼾当前能输⼊的合法数据的格式. ⽐如只能输⼊数字, 只能
输⼊⽇期等.
  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值