4.常用控件
文章目录
- 4.常用控件
-
- 前言(了解即可)
- QWidget核心属性
-
- enable
- geometry
- [window frame](#window frame)
- windowTitle
- windowIcon
- windowOpacity
- cursor
- font
- toolTip
- focusPolicy
- styleSheet
- QWidget中的其他属性
前言(了解即可)
概述
Qt提供了许多内置控件,如按钮、文本框、单选按钮、复选按钮、下拉框等,这些控件可以直接使用,大大提高了图形化界面开发效率并降低了开发成本。学习这些控件的使用方法、特性和注意事项非常关键。
控件(Widget)是图形化界面中各种元素的统称,包括按钮、文本框甚至窗口都可以称为控件。Widget英文原意是"小组件"或"小部件",但"控件"这个翻译听起来更专业。在计算机领域,概念名称的选择很重要,一个好听的名字能让技术显得更专业,就像Java中的"包装类"、"自动装箱"、"自动拆箱"等术语。Qt Creator左侧面板中包含了Qt内置的各种控件,本章就是要学习这些典型控件的使用方法。理解和使用这些控件对于正确使用Qt开发图形化界面程序至关重要。
历史
早期的图形化界面开发没有控件的概念,所有界面元素都是通过绘制实现的。显示器屏幕可以理解为一个画布,操作系统提供API让开发者在画布上绘制点、线、矩形、三角形等图形并填充颜色,这与计算机图形学课程的内容相关。开发图形化界面程序时,需要先绘制窗口(矩形),然后在窗口中绘制标题栏、图标、按钮等元素。这种开发方式非常古老,文曲星电子词典就是采用这种开发方式的典型例子。文曲星是早期的电子词典设备,主要用于查单词但也能玩游戏,它提供了一个叫Lava的开发平台(名称与Java相似),开发者可以基于这个平台开发程序,包括移植一些经典游戏如仙剑奇侠传。这种没有控件的开发方式非常原始和低效,后来为了提高开发效率才引入了控件的概念。
再后来经过一段时间的发展,控件比较简单且数量有限,HTML中的标签就是典型的早期控件实现。HTML提供了多种标签,如img标签显示图片、a标签创建链接、input标签创建输入框、button标签创建按钮等,这些标签在网页上会呈现为不同的控件效果。HTML提供的这些"控件"数量有限且外观原始,早期的网页看起来非常粗糙和简单,如图片显示、输入框和按钮等元素都很基础。虽然引入了控件概念提高了开发效率,但早期开发出来的程序效果仍然比较原始。
如今我们拥有了更完整的控件体系, 基本可以覆盖到 GUI 开发中的⼤部分场景 。编程讲究"站在巨人的肩膀上"而不是"从头发明轮子",开发图形化界面时不需要从零实现所有内容。
QWidget核心属性
在 Qt 中, 使⽤ QWidget 类表⽰ "控件". 像按钮, 视图, 输⼊框, 滚动条等具体的控件类, 都是继承⾃ QWidget ,可以说, QWidget 中就包含了 Qt 整个控件体系中, 通⽤的部分。

enable
第一个介绍的属性是enabled,它控制控件是否可用。禁用状态的控件无法接收用户输入,外观显示为灰色,且其所有子控件也会被禁用。通过isEnabled()可以查询控件状态,setEnabled()可以设置状态。
| API | 说明 |
|---|---|
| isEnable () | 获取到控件的可⽤状态 |
| setEnabled (bool) | 设置控件是否可使⽤. true 表⽰可⽤, false 表⽰禁⽤ |
示例:
cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPushButton* button = new QPushButton(this);
button->setText("被禁用的按钮");
button->move(200,200);
button->setEnabled(false);
qDebug() << button->isEnabled();
}

QObject的objectName属性介绍
QObject 是 QWidget 的⽗类. ⾥⾯最主要的属性就是 objectName 。在⼀个 Qt 程序中, objectName 相当于对象的⾝份标识, 彼此之间不能重复。
在使⽤ Qt Designer 时, 尤其是界⾯上存在多个 widget 的时候, 可以通过 objectName 获取到指定的 widget 对象。Qt Designer ⽣成的 ui ⽂件, 本⾝是 xml 格式的,qmake 会把这个 xml ⽂件转换成 C++ 的 .h ⽂件(这个⽂件⽣成在 build ⽬录中), 构成⼀个 ui_widget 类. 每个 widget 的 objectName 最终就会成为 ui_widget 类的属性名字. 最终这个类的实例, 就是 Ui::Widget *ui , 因此就可以通过形如 ui->pushButton 或者 ui->pushButton_2 这样的代码获取到界⾯上的 widget 对象了

geometry
在Qt中,geometry属性表示控件的位置和尺寸,可以视为四个属性的统称:x、y、width和height。x和y表示控件左上角在当前坐标系中的位置,width和height表示控件的宽度和高度。geometry属性的本质是描述控件的位置和尺寸信息。

但是实际开发中, 我们并不会直接使⽤这⼏个属性, ⽽是通过⼀系列封装的⽅法来获取/修改. 例如:
| API | 说明 |
|---|---|
| geometry() | 获取到控件的位置和尺⼨. 返回结果是⼀个 QRect, 包含了 x, y, width, height. 其中 x, y 是左上⻆的坐标 |
| setGeometry(QRect) setGeometry(int x, int y, int width, int height) | 设置控件的位置和尺⼨. 可以直接设置⼀个 QRect, 也可以分四个属性单独设置 |
- Qt中对几何概念进行了封装,例如
QPoint表示点,QRect表示矩形。这些对象非常轻量,属性少且占用空间小,因此在C++代码中通常按值传递参数而非引用传递。对于小对象来说,拷贝开销可以忽略不计。 - 在QT中使用
QDebug能更方便得输出调试信息,因为QDebug直接兼容一些QT定义的类,如QRect,可以直接通过QDebug打印到控制台,相较于cout的方式更加方便
window frame
Window Frame是操作系统自带的窗口框架,包括标题栏和边框,会自动附加在图形界面程序上。可以通过特殊API去除或隐藏Window Frame,例如全屏游戏时会隐藏Window Frame。
- Qt中的坐标系体系以父元素作为参考,例如窗口中的按钮以窗口widget作为父元素。Window Frame会影响
Geometry属性的计算方式。Qt提供了两组不同的API来计算位置和尺寸:- 一组以widget本体左上角为原点(如
geometry和setGeometry),不考虑Window Frame; - 另一组以Window Frame左上角为原点(如
frameGeometry和setFrameGeometry),需要考虑Window Frame。
- 一组以widget本体左上角为原点(如

使用frameGeometry和setFrameGeometry需要注意:
- 在构造⽅法(
Widget的构造函数)中,Widget刚刚创建出来, 还没有加⼊到对象树中. 此时也就不具备 Window frame。widget的显示需要两个步骤:首先构造对象,然后将其加入到对象树中。Window Frame是在后一个步骤中添加的,包括标题栏等元素。因此,在构造函数执行时,widget还没有被附加Window Frame,自然看不到两者的差异。为了观察到Window Frame的实际影响,必须将比较代码放在widget完全构造后的阶段执行,例如在按钮点击事件处理函数中。 - 如果把打印
pushButton的geometry和frameGeometry, 结果就是与这个pushBotton所在窗口完全相同的. 因为pushButton并⾮是⼀个窗⼝
windowTitle
在上面的Windows Frame我们知道了操作系统自带的窗口框架,包括标题栏和边框,我们也可以对标题栏进行设置。
| API | 说明 |
|---|---|
| windowTitle() | 获取到控件的窗⼝标题 |
| setWindowTitle(const QString& title) | 设置控件的窗⼝标题 |
需要注意的是,这个属性及其相关方法属于QWidget类,但只对顶层窗口有效。如果对窗口内的按钮或输入框等普通控件设置windowTitle,将不会产生任何效果。

windowIcon
windowIcon属性,它用于表示和设置窗口图标。窗口图标会显示在窗口左上角和任务栏,默认的Qt程序图标被认为不够美观。可以通过windowIcon()获取当前图标(返回QIcon对象),但更常用的是setWindowIcon()方法来设置自定义图标。与windowTitle类似,这些API只对顶层窗口有效。QIcon是Qt中专门表示图标的类,体现了Qt良好的面向对象设计。
| API | 说明 |
|---|---|
| windowIcon() | 获取到控件的窗⼝图标. 返回 QIcon 对象 |
| setWindowIcon(const QIcon& icon) | 设置控件的窗⼝图标 |

注意:
-
Windows 下路径的分隔符可以使⽤
/也可以使⽤\. 但是如果在 字符串 中使⽤\, 需要写作转义字符的形式\\. 因此我们还是更推荐使⽤/. -
QIcon建议直接在栈上创建。
QIcon对象是一个较小的对象,创建后需要设置到某个QWidget中。QIcon对象的释放与否不影响图标的最终显示,这与QPushButton不同,后者如果提前释放会导致界面上无法显示。QIcon不支持对象树机制,无法指定父对象,因此无法通过Qt的对象树机制进行自动释放。这种情况下,可以直接将QIcon创建在栈上,函数结束时自动释放即可。 -
实际开发中, 我们⼀般不会在代码中通过绝对路径引⼊图⽚. 因为我们⽆法保证程序发布后, ⽤⼾的电脑上也有同样的路径。如果使⽤相对路径, 则需要确保代码中的相对路径写法和图⽚实际所在的路径匹配 (⽐如代码中写作 "./image/rose.jpg", 就需要在当前⼯作⽬录中创建 image ⽬录, 并把 jpg 放进去).
-
对于 Qt 程序来说, 当前⼯作⽬录可能是变化的. ⽐如通过 Qt Creator 运⾏的程序, 当前⼯作⽬录是项⽬的构建⽬录; 直接双击 exe 运⾏, ⼯作⽬录则是 exe 所在⽬录.所谓构建⽬录, 是和 Qt 项⽬并列的, 专⻔⽤来放⽣成的临时⽂件和最终 exe 的⽬录

QRC机制解决资源路径问题
Qt提供了QRC机制,从根本上解决图片路径和文件丢失的问题。QRC机制通过引入额外的XML文件(后缀名为.qrc),记录项目中使用的图片资源及其路径。在编译时,Qt会根据QRC文件描述的图片信息提取二进制数据,并将其嵌入到最终的可执行文件中。这种方式确保图片路径在用户机器上始终存在,且图片不会被用户误删。
该机制的优势在于解决资源可用性问题,但存在明显限制:无法处理过大的资源文件,如几个GB的视频文件。处理大文件会导致编译时间显著增加,因为需要将大文件转换为C++代码;同时生成的exe文件体积会过大,影响操作系统加载速度。虽然存在这些限制,但这种资源嵌入机制仍被广泛使用,不仅限于Qt框架,其他图形界面框架如安卓也采用类似方式处理资源文件。
Qt中通过qrc文件实现资源管理,使用时需要先创建qrc文件,文件名需避免使用中文和特殊符号。创建好的qrc文件会显示在Qt Creator提供的可视化编辑界面中,接下来需要将图片等资源导入其中。导入前需要先创建前缀(prefix),前缀相当于虚拟目录,用于在代码中访问嵌入的资源。创建前缀后,通过"add files"按钮选择要导入的资源文件,但需注意资源文件必须位于qrc文件同级或其子目录中。导入成功后,在代码中访问资源时需要使用冒号开头的特殊路径格式,格式为":/前缀/文件名",其中前缀要与创建时设置的一致。这种访问方式让Qt知道要从qrc管理的资源中查找文件。程序运行时,虽然实际目录中看不到原始资源文件,但资源已成功嵌入exe并能正常使用。

windowOpacity
windowOpacity是QWidget中一个重要的属性,用于设置窗口的透明度。透明度在实际开发中常用于实现控件的半透明效果。
| API | 说明 |
|---|---|
| windowOpacity() | 获取到控件的不透明数值. 返回 float, 取值为 0.0 -> 1.0 其中 0.0 表⽰全透明, 1.0 表⽰完全不透明 |
| setWindowOpacity(flo at n) | 设置控件的不透明数值. |
举例:

注意, C++ 中 float 类型遵守 IEEE 754 标准, 因此在进⾏运算的时候会有⼀定的精度误差. 因此 1 -0.1 的数值并⾮是 0.9。由于浮点数存储方式的固有特性,在进行浮点数运算时需要特别注意精度问题。不能直接使用等号比较两个浮点数是否相等,因为微小的存储误差可能导致比较结果不准确。正确的做法是计算两个数的差值,然后判断这个差值的绝对值是否小于某个预先定义的误差范围(epsilon)。
代码中的参数范围判定与防御性编程
在代码中,当opposite的值超过1.0时,设置操作无法生效,因此可以不加判定条件。通过实际操作演示,即使不加判定条件,程序也不会将1.1设置进去。尽管如此,仍然建议在代码中添加范围判定条件以提高代码的稳健性。
代码大全这本书中提到防御性编程的概念,类似于防御性驾驶,即在编程中做好规范以防止他人错误对自己造成伤害。例如,在多人协作的项目中,模块之间通过API相互调用,需要考虑是否在调用前对参数进行检查。书中建议采用双重判定(double check)的方式,即在函数调用者和函数实现者两方都对参数进行合法性判定,以确保任何一方出现失误都不会产生严重后果。这种机制在函数定义和调用由不同人负责时尤为重要,可以明确责任归属。在代码中,虽然函数内部已经进行了判定,但最好在调用时也进行判定,双重保证可以使代码更加稳健。
cursor
cursor属性用于修改鼠标光标的样式,默认情况下光标显示为箭头形状,当鼠标放在文本上时会变成类似大写字母I的形状,程序卡住时可能显示为圆圈转圈的样式。在Qt中可以通过cursor属性实现不同控件或窗口部分显示不同光标效果。
| API | 说明 |
|---|---|
| cursor() | 获取到当前 widget 的 cursor 属性, 返回 QCursor 对象. 当⿏标悬停在该 widget 上时, 就会显⽰出对应的形状 |
| setCursor(const QCursor& cursor) | 设置该 widget 光标的形状. 仅在⿏标停留在该 widget 上时⽣效 |
| QGuiApplication::setOverrideCursor(co nst QCursor& cursor) | 设置全局光标的形状. 对整个程序中的所有 widget 都会⽣效. 覆盖上⾯的 setCursor 设置的内容 |
使用内置光标
-
在Qt中可以通过cursor属性实现不同控件或窗口部分显示不同光标效果。参数为QCursor对象,这个属性属于widget级别,意味着同一个界面中不同控件可以设置不同光标。还有一个全局光标设置方法setOverrideCursor,由QGuiApplication类提供,这个全局指的是程序范围内的全局,不是系统级别的全局。
cppWidget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->pushButton_add->setCursor(QCursor(Qt::WaitCursor)); }QCursor可以用QT内置的光标样式,在枚举类型
CursorShape中。 -
不仅可以通过API修改某个控件的cursor,也可以通过图形化编辑器中的属性编辑器直接修改

自定义光标
Qt ⾃带的光标形状有限. 我们也可以⾃⼰找个图⽚, 做成⿏标的光标.我们用之前的QRC机制将我们自定义的光标图片加入到资源文件中。
cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 创建一个位图对象, 加载自定义光标图片
QPixmap pixmap(":/image.png");
// 缩放图片为 64 * 64 的尺寸.
pixmap = pixmap.scaled(64, 64);
// 创建 QCursor 对象, 并指定 "热点" 为 (2, 2) 坐标位置.
// 所谓 "热点" 就是图标点击时生效的位置.
QCursor cursor(pixmap, 2, 2);
// 设置光标
this->setCursor(cursor);
}
其他:阿里巴巴矢量图标库是获取高质量光标/图标资源的优质平台。该网站由阿里维护,提供海量免费可商用的矢量图标资源。
font
在Qt框架中,font属性是一个非常重要的属性集合,专门用于处理与字体相关的各种设置。这个属性不是单一的属性,而是一组属性的组合,涵盖了字体显示所需的各个方面。通过font函数可以直接获取当前widget中的字体属性,同时也可以通过setFont函数来修改这些属性。Qt将字体这个概念抽象成了QFont类,这个类比之前介绍的其他类包含更多属性。
| 属性 | 说明 |
|---|---|
| family | 字体家族. ⽐如 "楷体", "宋体", "微软雅⿊" 等. |
| pointSize | 字体⼤⼩ |
| weight | 字体粗细. 以数值⽅式表⽰粗细程度取值范围为 [0, 99], 数值越⼤, 越粗. |
| bold | 是否加粗. 设置为 true, 相当于 weight 为 75. 设置为 false 相当于 weight 为 50. |
| italic | 是否倾斜 |
| underline | 是否带有下划线 |
| strikeOut | 是否带有删除线 |
我们在使用时仍然可以通过代码和图形化界面两种方式进行设置,图形化界面中在某个控件的属性编辑器中找到对应的选项即可,但是图形化配置没有代码灵活,代码操作可以在程序执行的过程中进行修改。代码示例:
cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 设置 label 的⽂本内容
ui->label->setText("这是⼀段⽂本");
// 创建字体对象
QFont font;
// 设置字体家族
font.setFamily("仿宋");
// 设置字体⼤⼩
font.setPointSize(20);
// 设置字体加粗
font.setBold(true);
// 设置字体倾斜
font.setItalic(true);
// 设置字体下划线
font.setUnderline(true);
// 设置字体删除线
font.setStrikeOut(true);
// 设置字体对象到 label 上
ui->label->setFont(font);
}

toolTip
ToolTip功能,即在鼠标悬停控件时显示提示信息。在Qt中通过setToolTip设置提示内容,setToolTipDuration设置显示时间(单位毫秒)。提到可以设置永久显示或特定时长后自动消失。
| API | 说明 |
|---|---|
| setToolTip | 设置 toolTip. ⿏标悬停在该 widget 上时会有提⽰说明. |
| setToolTipDuring | 设置 toolTip 提⽰的时间. 单位 ms. 时间到后 toolTip ⾃动消失. |
举例:
cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->pushButton->setToolTip("这是一个按钮");
ui->pushButton->setToolTipDuration(7000);
}

focusPolicy
设置控件获取到焦点的策略. ⽐如某个控件能否⽤⿏标选中或者能否通过 tab 键选中。以输入框为例,必须选中输入框才能将键盘输入内容录入其中;若焦点移至其他控件或窗口,键盘输入无效。在GUI编程中,控件的焦点同样非常重要,因为只有获得焦点的控件才能接收用户的操作。例如,在线上笔试平台中,如果考生切换窗口到其他程序(如百度搜索),笔试平台会感知到窗口失去焦点,从而记录考生可能存在的作弊行为。线上笔试平台的反作弊机制非常成熟,会结合摄像头、麦克风和行为特征综合评估作弊风险。
| API | 说明 |
|---|---|
| focusPolicy() | 获取该 widget 的 focusPolicy, 返回 Qt::FocusPolicy |
| setFocusPolicy(Qt::FocusPolicy policy) | 设置 widget 的 focusPolicy |
在Qt编程中,控件的焦点获取方式主要有两种:鼠标点击和键盘Tab键切换。通过设置控件的focusPolicy属性,可以控制控件获取焦点的方式,默认情况下,控件通常设置为StrongFocus。通过代码示例可以演示不同focusPolicy属性的实际效果,例如创建四个输入框并分别设置不同的focusPolicy,观察鼠标点击和Tab键切换时的行为差异。
cpp
enum FocusPolicy {
NoFocus = 0,
TabFocus = 0x1,
ClickFocus = 0x2,
StrongFocus = TabFocus | ClickFocus | 0x8,
WheelFocus = StrongFocus | 0x4
};
举例略。
styleSheet
styleSheet被翻译为样式表,样式表的作用是通过类似CSS的方式设置数据的样式。在讲解过程中提到了两个生僻词需要解释:CSS和样式。样式在Qt学习过程中经常接触,它描述界面的具体外观。
CSS是层叠样式表,用于网页开发时设置网页样式。经过多年发展,CSS已经非常成熟,提供了丰富功能来美化界面效果。Qt框架参考了CSS的概念,创建了自己的样式系统QSS(Qt Style Sheet)。虽然QSS功能不如CSS全面,但也能实现很多界面美化效果。QSS的语法与CSS类似,使用键值对格式,键和值之间用冒号分隔,不同属性之间用分号分隔。
这个属性可以在属性面板中找到,也可以通过右键菜单的"改变样式表"选项打开编辑界面。样式设置支持实时预览,可以立即看到修改效果。常见的样式属性包括font-family(字体)、font-size(字号)、font-style(文字样式)和color(文字颜色)等。这些属性的具体用法可以在Qt文档中查询,通过搜索"qt stylesheet"可以找到相关文档。

颜色表示方式及取色器使用
计算机中颜色使用RGB方式表示,通过红、绿、蓝三种颜色的不同比例混合构成各种颜色。RGB分量通常使用一个字节表示,取值范围为0到255。可以使用十进制或十六进制表示颜色值。例如,红色拉满可以表示为255,0,0或#FF0000。
了解颜色表示方式后,需要确定窗口初始背景色的具体数值。可以使用取色器工具获取屏幕上具体点的颜色值。取色器工具有多种形式,例如Photoshop中的取色器,或QQ截图功能内置的取色器。通过取色器可以方便地获取颜色值,帮助准确设置样式。
QWidget中的其他属性
通过前面的课程内容,介绍了Qt核心类QyGet的一些关键属性。课件中章节最上面的表格列出了许多属性,其中大部分已经介绍过,并提供了相关的代码例子供参考。表格下方还涉及一些其他属性,这些属性没有一一展开介绍,建议在使用时参考相关资料或文档。
| 属性 | 说明 |
|---|---|
| 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 的可访问名称. 这个名称可以被辅助技术 (像屏幕阅读器) 获取到 这个属性⽤于实现⽆障碍程序的场景中 (也就是给盲⼈写的程序). |
| accessibleDescription | 设置 widget 的详细描述. 作⽤同 accessibleName |
| inputMethodHints | 针对输⼊框有效, ⽤来提⽰⽤⼾当前能输⼊的合法数据的格式. ⽐如只能输⼊数字, 只能输⼊⽇期等 |
|
| windowFilePath | 能够把 widget 和⼀个本地⽂件路径关联起来. PS: 其实作⽤不⼤ |
| accessibleName | 设置 widget 的可访问名称. 这个名称可以被辅助技术 (像屏幕阅读器) 获取到
这个属性⽤于实现⽆障碍程序的场景中 (也就是给盲⼈写的程序). |
| accessibleDescription | 设置 widget 的详细描述. 作⽤同 accessibleName |
| inputMethodHints | 针对输⼊框有效, ⽤来提⽰⽤⼾当前能输⼊的合法数据的格式. ⽐如只能输⼊数字, 只能输⼊⽇期等 |