TextInput QML Type
显示一行可编辑的文本。更多...
属性
- acceptableInput : bool
- activeFocusOnPress : bool
- autoScroll : bool
- bottomPadding : real
- canPaste : bool
- canRedo : bool
- canUndo : bool
- color : color
- contentHeight : real
- contentWidth : real
- cursorDelegate : Component
- cursorPosition : int
- cursorRectangle : rectangle
- cursorVisible : bool
- displayText : string
- echoMode : enumeration
- effectiveHorizontalAlignment : enumeration
- font.bold : bool
- font.capitalization : enumeration
- font.contextFontMerging : bool
(since 6.8) - font.family : string
- font.features : object
(since 6.6) - font.hintingPreference : enumeration
- font.italic : bool
- font.kerning : bool
- font.letterSpacing : real
- font.pixelSize : int
- font.pointSize : real
- font.preferShaping : bool
- font.preferTypoLineMetrics : bool
(since 6.8) - font.strikeout : bool
- font.styleName : string
- font.underline : bool
- font.variableAxes : object
(since 6.7) - font.weight : int
- font.wordSpacing : real
- horizontalAlignment : enumeration
- inputMask : string
- inputMethodComposing : bool
- inputMethodHints : enumeration
- leftPadding : real
- length : int
- maximumLength : int
- mouseSelectionMode : enumeration
- overwriteMode : bool
- padding : real
- passwordCharacter : string
- passwordMaskDelay : int
- persistentSelection : bool
- preeditText : string
- readOnly : bool
- renderType : enumeration
- rightPadding : real
- selectByMouse : bool
- selectedText : string
- selectedTextColor : color
- selectionColor : color
- selectionEnd : int
- selectionStart : int
- text : string
- topPadding : real
- validator : Validator
- verticalAlignment : enumeration
- wrapMode : enumeration
信号
方法
- void clear()
- void copy()
- void cut()
- void deselect()
- void ensureVisible(int position)
- string getText(int start, int end)
- void insert(int position, string text)
- bool isRightToLeft(int start, int end)
- void moveCursorSelection(int position, SelectionMode mode)
- void paste()
- int positionAt(real x, real y, CursorPosition position)
- rect positionToRectangle(int pos)
- void redo()
- void remove(int start, int end)
- void select(int start, int end)
- void selectAll()
- void selectWord()
- void undo()
详细说明
TextInput 类型用于显示一行可编辑的纯文本。
TextInput 用于接收一行文本输入。可以对 TextInput 控件设置输入约束(例如,通过 `validator ` 或 `inputMask`),并将 `echoMode ` 设置为适当值后,即可将 TextInput 用作密码输入字段。
若要响应用户通过 Return 或 Enter 键提交文本,请处理accepted() 信号。当按下 Return 或 Enter 键且文本输入框失去焦点时,将触发editingFinished() 信号;当用户以任何方式编辑文本时,将触发textEdited() 信号。在大多数情况下,应优先使用这些信号,而非textChanged() 。
在 macOS 上,Home/End 键的向上/向下方向键绑定已被明确禁用。若需使用此类绑定(无论在何种平台上),您都需要在 QML 中自行实现。
属性文档
acceptableInput : bool [read-only]
除非已设置验证器或输入掩码,否则该属性始终为真。如果已设置验证器或输入掩码,则只有当当前文本作为最终字符串(而非中间字符串)符合验证器或输入掩码的要求时,该属性才为真。
activeFocusOnPress : bool
TextInput 是否应在鼠标点击时获得活动焦点。默认情况下,此选项设置为 true。
autoScroll : bool
当文本长度超过宽度时,TextInput 是否应滚动。默认情况下,此选项设置为 true。
另请参阅 ensureVisible()。
这些属性控制内容周围的填充间距。该间距是在contentWidth 和contentHeight 之外额外预留的。
除非显式设置,否则各个内边距属性将采用padding 属性的值。例如,如果padding 设置为4 ,而leftPadding 设置为8 ,则8 将被用作左侧内边距。
注意:如果为 TextInput 指定了显式的宽度或高度,必须确保其足够大,以容纳相应的内边距值。例如:如果topPadding 和bottomPadding 均设置为10 ,但TextInput 的高度仅设置为20 ,则文本将没有足够的垂直空间进行渲染,从而导致文字被截断。
canPaste : bool [read-only]
如果TextInput 具有写入权限,且剪贴板的内容适合粘贴到TextInput 中,则返回true。
canRedo : bool [read-only]
如果TextInput 可写,且存在可重做的undone 操作,则返回true。
canUndo : bool [read-only]
如果TextInput 可写且存在可以撤销的先前操作,则返回 true。
color : color
文字颜色。
contentHeight : real [read-only]
返回文本的高度,包括当文本无法完全容纳在设定的高度范围内时,超出该高度的部分。
contentWidth : real [read-only]
返回文本的宽度,包括当设置了wrapMode 时,因换行不足而超出指定宽度的部分。
cursorDelegate : Component
TextInput 中的光标委托。
如果为TextInput 设置了cursorDelegate,则将使用该委托来绘制光标,而非标准光标。当需要光标时,TextInput 会创建并管理该委托的实例,并将委托实例的x属性设置为当前字符左上角前一像素的位置。
请注意,委托组件的根项目必须是QQuickItem 或QQuickItem 的派生项。
cursorPosition : int
TextInput 中的光标位置。光标位于字符之间。
注意: 此处的 “字符”指的是QChar 对象组成的字符串,即16位Unicode字符,该位置被视为该字符串中的索引。 这并不一定对应于该书写系统中的单个字形,因为一个字形可能由多个 Unicode 字符表示,例如代理对、语言连字或变音符号的情况。
displayText 如果将echoMode 设置为TextInput.Password ,情况则有所不同:此时,每个passwordCharacter 都是一个“窄”字符(cursorPosition 总是移动 1 位),即使TextInput 中的文本并非如此。
cursorRectangle : rectangle [read-only]
文本输入框中渲染标准文本光标的矩形区域。只读。
当光标矩形发生变化时,自定义cursorDelegate 的位置和高度会自动更新以跟随光标矩形。该委托的宽度不受光标矩形变化的影响。
cursorVisible : bool
当TextInput 显示光标时,将此属性设置为true。
当TextInput 获得活动焦点时,该属性会被设置或取消,以便其他属性能够根据当前是否显示光标进行绑定。由于该属性会自动设置和取消,因此当您手动设置该值时,必须注意您的设置可能会被覆盖。
可以在脚本中直接设置该属性,例如当 KeyProxy 可能将按键转发至该控件时,若希望在此情况下使其看起来处于活动状态(但实际上并未赋予其活动焦点)。
不应像下方的 QML 代码那样直接在项上设置该属性,因为指定的值会在焦点变化时被覆盖并丢失。
TextInput {
text: "Text"
cursorVisible: false
}在上面的代码片段中,当TextInput 获得活动焦点时,光标仍会显示出来。
displayText : string [read-only]
这是在TextInput 中显示的文本。
如果将echoMode 设置为TextInput::Normal,则该属性与TextInput::text 属性的值相同。否则,该属性保存的是用户可见的文本,而text 属性则保存实际输入的文本。
注意:与 TextInput::text 属性不同, 该属性包含来自输入法的不完整文本输入内容。
另请参阅 preeditText 。
echoMode : enumeration
指定文本在TextInput 中的显示方式。
| 常量 | 说明 |
|---|---|
TextInput.Normal | 按原文显示文本。(默认) |
TextInput.Password | 显示passwordCharacter ,而不是实际的字符。在编辑时,新输入的字符会以明文形式显示,持续时间由passwordMaskDelay 属性指定。 |
TextInput.NoEcho | 不显示任何内容。 |
TextInput.PasswordEchoOnEdit | 内容被屏蔽,效果与TextInput.Password 相同。编辑期间,只要TextInput 拥有活动焦点,新输入的字符就会以明文形式显示。 |
effectiveHorizontalAlignment : enumeration [read-only]
使用附加属性LayoutMirroring::enabled 对应用程序布局进行镜像时,文本的水平对齐方式也会随之镜像。但horizontalAlignment 属性将保持不变。要查询TextInput 的实际水平对齐方式,请使用只读属性effectiveHorizontalAlignment 。
font.bold : bool
设置字体粗细是否为粗体。
font.capitalization : enumeration
设置文本的大小写格式。
| 常量 | 描述 |
|---|---|
Font.MixedCase | 正常情况:不应用任何大小写更改 |
Font.AllUppercase | 将要渲染的文本更改为全部大写 |
Font.AllLowercase | 将文本更改为全部小写字体 |
Font.SmallCaps | 将文本渲染为小写大写字体 |
Font.Capitalize | 将文本修改为每个单词的首字母大写 |
font.contextFontMerging : bool [since 6.8]
如果所选字体不包含某个特定字符,Qt 会自动选择一种外观相似且包含该字符的备用字体。默认情况下,此操作是按字符逐个进行的。
这意味着在某些不常见的情况下,即使文本属于同一脚本,也可能使用许多不同的字体来呈现同一串文本。将 `contextFontMerging ` 设置为 `true` 时,系统将尝试查找能匹配输入字符串最大子集的备用字体。对于存在缺失字形的字符串,此操作的开销会更大,但可能会产生更一致的结果。 默认情况下,contextFontMerging 的值为false 。
该属性在 Qt 6.8 中引入。
另请参阅 QFont::StyleStrategy 。
font.family : string
设置字体的字体家族名称。
字体家族名称不区分大小写,可选地包含字体厂商名称,例如“Helvetica [Cronyx]”。 如果该字体家族由多个字体厂商提供,且未指定具体厂商,则会随机选择一家厂商。如果该字体家族不可用,则将使用字体匹配算法设置一个字体家族。
font.features : object [since 6.6]
在根据内容调整文本形状时,将整数值应用于特定的 OpenType 特征。这提供了对字体调整过程的高级访问权限,可用于支持 API 中未涵盖的字体特征。
字体特征通过一个从四字母标签到整数值映射的映射表来表示。在大多数情况下,随标签传递的该整数值代表一个布尔值:值为零表示该特征已禁用,非零值表示已启用。但对于某些字体特征,其含义可能有所不同。 例如,当应用于salt 功能时,该值是一个索引,用于指定要使用的样式变体。
例如,frac 字体功能会将用斜杠分隔的斜体分数(如1/2 )转换为不同的表示形式。通常,这涉及将整个分数“烘焙”成单个字符宽度(如½ )。
如果字体支持frac 功能,则可以在shaper中按以下代码启用该功能:
Text {
text: "One divided by two is 1/2"
font.family: "MyFractionFont"
font.features: { "frac": 1 }
}可以在同一映射中为多个功能分配值。例如,如果您还希望禁用字体的字距调整,可以按以下方式显式禁用该功能:
Text {
text: "One divided by two is 1/2"
font.family: "MyFractionFont"
font.features: { "frac": 1, "kern": 0 }
}您还可以将字体属性收集到一个对象中:
Text {
text: "One divided by two is 1/2"
font: {
family: "MyFractionFont"
features: { "frac": 1, "kern": 0 }
}
}注意:默认情况下, Qt 会根据其他字体属性启用或禁用某些字体功能。特别是,kern 功能的启用/禁用取决于font::kerning 属性。此外,所有连字功能(liga 、clig 、
dlig,hlig )在设置了font.letterSpacing 时将被禁用,但仅限于连字仅用于装饰效果的书写系统。对于需要使用连字的书写系统,这些功能将保持默认状态。 通过font.features 设置的值将覆盖默认行为。例如,如果将"kern" 设置为1,则无论font::kerning 属性是否设置为false,字距调整都将始终启用。同样,
如果将其设置为0 ,则字间距调整将始终被禁用。
该属性在 Qt 6.6 中引入。
另请参阅 QFont::setFeature()。
font.hintingPreference : enumeration
为文本设置首选的提示级别。
这是向底层文本渲染系统发出的提示,用于指定使用特定级别的提示处理,且在不同平台上的支持情况各不相同。更多详细信息请参阅QFont::HintingPreference 文档中的表格。
注意:此 属性仅在与渲染类型Text.NativeRendering 配合使用时才生效。
| 常量 | 描述 |
|---|---|
Font.PreferDefaultHinting | 使用目标平台的默认提示级别。 |
Font.PreferNoHinting | 如果可能,渲染文本时不对字形轮廓进行提示。文本布局在排版上将非常精确,使用与打印时相同的度量标准。 |
Font.PreferVerticalHinting | 如果可能,在不进行水平提示的情况下渲染文本,但将字形在垂直方向上对齐到像素网格。 在显示密度过低、无法准确渲染字形的情况下,文本会显得更加清晰。但由于字形的水平度量未进行提示,因此文本的布局可以缩放以适应更高密度的设备(如打印机),而不会影响换行等细节。 |
Font.PreferFullHinting | 如果可能,请在水平和垂直方向都使用提示来渲染文本。 文本会进行调整以优化在目标设备上的可读性,但由于度量值取决于文本的目标大小,字形的位置、换行及其他排版细节将不会随之调整,这意味着文本布局在像素密度不同的设备上可能会呈现不同的外观。 |
font.italic : bool
设置字体是否具有斜体样式。
font.kerning : bool
在调整文本形状时,启用或禁用字间距(Kerning)OpenType功能。禁用此功能可在创建或修改文本时提高性能,但会牺牲部分视觉效果。默认值为true 。
Text { text: "OATS FLAVOUR WAY"; font.kerning: false }font.letterSpacing : real
设置字体的字间距。
字母间距会改变字体中各个字母之间的默认间距。正值会将字母间距增加相应像素数;负值则会减少该间距。
font.pixelSize : int
设置以像素为单位的字体大小。
使用此函数会导致字体依赖于设备。请使用 `pointSize ` 以与设备无关的方式设置字体大小。
font.pointSize : real
设置以点为单位的字体大小。点大小必须大于零。
font.preferShaping : bool
有时,字体会对一组字符应用复杂的规则,以确保其正确显示。 在某些书写系统中(例如婆罗米文系),这是确保文本可读性的必要条件;但在拉丁字母等系统中,这仅仅是一种美观功能。当不需要这些功能时,将preferShaping 属性设置为false将禁用所有此类功能,这在大多数情况下可以提高性能。
默认值为true 。
Text { text: "Some text"; font.preferShaping: false }font.preferTypoLineMetrics : bool [since 6.8]
提供字体ascent 、descent 和leading 的、相互竞争的垂直线度量集。这些通常被称为win(Windows)度量和typo(排版)度量。 虽然规范建议使用typo 度量值来设置行距,但许多应用程序更倾向于使用win 度量值,除非在字体的fsSelection字段中设置了USE_TYPO_METRICS 标志。出于向后兼容性的考虑,Qt 应用程序也是如此。 对于将USE_TYPO_METRICS 标志设为有效以表明typo 度量有效的字体,以及win 度量与typo 度量相匹配的字体,这不会构成问题。然而,对于某些字体,win 度量可能大于理想的行间距,且USE_TYPO_METRICS 标志可能因疏忽而未被设置。对于此类字体,设置font.preferTypoLineMetrics 可能会获得更佳的效果。
默认情况下,preferTypoLineMetrics 的值为false 。
该属性在 Qt 6.8 中引入。
另请参阅 QFont::StyleStrategy 。
font.strikeout : bool
设置字体是否具有删除线样式。
font.styleName : string
设置字体的样式名称。
样式名称不区分大小写。如果设置了该选项,系统将根据样式名称来匹配字体,而非根据字体属性font.weight 、font.bold 和font.italic 进行匹配。
font.underline : bool
用于设置文本是否带下划线。
font.variableAxes : object [since 6.7]
将浮点数值应用于可变字体的可变轴。
可变字体提供了一种在同一字体文件中存储多种变体(具有不同的粗细、宽度或样式)的方法。这些变体以浮点数值的形式表示,对应于一组预定义的参数,称为“可变轴”。 具体变体通常由字体设计师命名,在 Qt 中,这些变体可通过 setStyleName() 进行选择,就像传统的子字体家族一样。
在某些情况下,为不同的轴提供任意值也很有用。例如,如果一种字体有 Regular 和 Bold 子字族,您可能希望获得介于两者之间的字重。此时,您可以通过为字体的“wght”轴提供自定义值来手动请求该字重。
Text {
text: "Foobar"
font.family: "MyVariableFont"
font.variableAxes: { "wght": (Font.Normal + Font.Bold) / 2.0 }
}如果字体支持“wght”轴,且给定的值在其定义的范围内,则会提供对应字重为 550.0 的字体。
许多字体都提供了一些标准轴,例如“wght”(字重)、“wdth”(字宽)、“ital”(斜体)和“opsz”(光学尺寸)。它们各自在字体本身中都有定义的范围。 例如,“wght”的取值范围可能为 100 到 900(QFont::Thin 到QFont::Black ),而“ital”的取值范围则为 0 到 1(从非斜体到完全斜体)。
字体还可以选择定义自定义轴;唯一的限制是名称必须符合QFont::Tag 的要求(由四个拉丁-1 字符组成的序列)。
默认情况下,未设置任何可变轴。
注意:在 Windows上 ,如果使用了可选的 GDI 字体后端,则不支持可变轴。
该属性在 Qt 6.7 中引入。
另请参阅 QFont::setVariableAxis()。
font.weight : int
请求的字体粗细。请求的粗细必须是1到1000之间的整数,或以下预定义值之一:
| 常量 | 描述 |
|---|---|
Font.Thin | 100 |
Font.ExtraLight | 200 |
Font.Light | 300 |
Font.Normal | 400(默认) |
Font.Medium | 500 |
Font.DemiBold | 600 |
Font.Bold | 700 |
Font.ExtraBold | 800 |
Font.Black | 900 |
font.wordSpacing : real
设置字体的词间距。
单词间距会改变单词之间的默认间距。正值会将单词间距相应增加若干像素,而负值则会相应地缩小单词间距。
设置文本在TextInput 项的宽度和高度范围内的水平对齐方式。默认情况下,文本对齐遵循文本的自然对齐方式,例如,从左到右阅读的文本将左对齐。
TextInput 该组件不支持垂直对齐,因为其自然高度恰好等于单行文本的高度。若手动将高度设置为更大的数值,TextInput 将始终垂直顶部对齐。您可以使用锚点在另一个组件内按需调整其对齐方式。
horizontalAlignment 的有效值为TextInput.AlignLeft 、TextInput.AlignRight 和TextInput.AlignHCenter 。
verticalAlignment 的有效值为TextInput.AlignTop (默认)、TextInput.AlignBottom 和TextInput.AlignVCenter 。
使用附加属性LayoutMirroring::enabled 来镜像应用程序布局时,文本的水平对齐方式也会被镜像。但是,属性horizontalAlignment 将保持不变。要查询TextInput 的实际水平对齐方式,请使用只读属性effectiveHorizontalAlignment 。
inputMask : string
允许您在TextInput 上设置输入掩码,以限制允许输入的文本内容。更多详细信息请参阅QLineEdit::inputMask ,因为TextInput 使用的正是完全相同的掩码字符串。
另请参阅 acceptableInput 和validator 。
inputMethodComposing : bool [read-only]
该属性用于指示TextInput 是否已从输入法接收了部分文本输入。
在构建输入内容时,输入法可能会依赖TextInput 发出的鼠标或键盘事件来编辑或提交部分文本。该属性可用于确定何时禁用可能干扰输入法正常运行的事件处理程序。
inputMethodHints : enumeration
向输入法提供有关文本输入预期内容及其操作方式的提示。
该值是标志位的按位组合,若未设置提示,则为 Qt.ImhNone。
会改变行为的标志有:
| 常量 | 描述 |
|---|---|
Qt.ImhHiddenText | 应隐藏输入的字符,这通常用于输入密码时。 |
请注意,Android 输入法(IME)会刻意限制密码字段仅允许输入拉丁/ASCII字符。
| 常量 | 描述 |
|---|---|
Qt.ImhSensitiveData | 活动输入法不应将输入的文本存储在任何持久存储中,例如预测性用户词典。 |
请注意,Qt 框架将此视为可见密码,在这种情况下,Android 输入法会刻意只允许输入拉丁/ASCII 字符。
| 常量 | 描述 |
|---|---|
Qt.ImhNoAutoUppercase | 当句子结束时,输入法不应尝试自动切换为大写。 |
Qt.ImhPreferNumbers | 最好使用数字(但不是必须的)。 |
Qt.ImhPreferUppercase | 首选大写字母(但非必须)。 |
Qt.ImhPreferLowercase | 建议使用小写字母(但非强制要求)。 |
Qt.ImhNoPredictiveText | 输入时请勿使用预测文本(即词典查找)。 |
Qt.ImhDate | 文本编辑器充当日期字段。 |
Qt.ImhTime | 文本编辑器用作时间字段。 |
限制输入的标志(排他标志)包括:
| 常量 | 描述 |
|---|---|
Qt.ImhDigitsOnly | 仅允许输入数字。 |
Qt.ImhFormattedNumbersOnly | 仅允许输入数字。这包括小数点和负号。 |
Qt.ImhUppercaseOnly | 仅允许输入大写字母。 |
Qt.ImhLowercaseOnly | 仅允许输入小写字母。 |
Qt.ImhDialableCharactersOnly | 仅允许输入适合电话拨号的字符。 |
Qt.ImhEmailCharactersOnly | 仅允许输入适用于电子邮件地址的字符。 |
Qt.ImhUrlCharactersOnly | 仅允许输入适用于URL的字符。 |
掩码:
| 常量 | 描述 |
|---|---|
Qt.ImhExclusiveInputMask | 如果使用了任何排他标志,则此掩码返回非零值。 |
length : int [read-only]
返回TextInput 项中的总字符数。
如果TextInput 具有inputMask ,则长度将包含掩码字符,并且可能与text 属性返回的字符串长度不同。
与查询text 属性的长度相比,此属性的执行速度可能更快,因为它无需对TextInput 的内部字符串数据进行任何复制或转换。
maximumLength : int
TextInput 中允许的文本最大长度。
如果文本过长,则会在限制处被截断。
默认情况下,此属性的值为 32767。
mouseSelectionMode : enumeration
指定如何使用鼠标选择文本。
| 常量 | 描述 |
|---|---|
TextInput.SelectCharacters | (默认)选择范围按单个字符更新。 |
TextInput.SelectWords | 选择范围按整个单词进行更新。 |
此属性仅在selectByMouse 为true时适用。
overwriteMode : bool
用户输入的文本是否会覆盖现有文本。
与许多文本编辑器一样,文本编辑器控件可以配置为将用户输入的新文本插入到现有文本中,或直接覆盖现有文本。
如果此属性为true ,则新文本将按字符逐个覆盖现有文本;否则,文本将插入到光标位置,并替换原有文本。
默认情况下,此属性为false (新文本不会覆盖现有文本)。
passwordCharacter : string
当echoMode 设置为Password或PasswordEchoOnEdit时,将显示此字符。默认情况下,该字符即为平台主题所使用的密码字符。
如果将此属性设置为包含多个字符的字符串,则使用该字符串的第一个字符。如果字符串为空,则该值将被忽略,且该属性不会被设置。
passwordMaskDelay : int
设置可见字符被密码字符遮盖前的延迟时间,单位为毫秒。
将该属性赋值为 undefined 时,将调用 reset 方法。
persistentSelection : bool
当TextInput 失去焦点,被场景中的其他项目取代时,是否应保留其选中状态。默认情况下,此选项设置为false;
preeditText : string [read-only]
该属性包含来自输入法的部分文本输入。
若要关闭由预测功能产生的部分文本,请在inputMethodHints 中设置Qt.ImhNoPredictiveText 标志。
另请参阅 displayText 和inputMethodHints 。
readOnly : bool
用于设置用户输入是否可以修改TextInput 的内容。
如果将 readOnly 设置为 true,则用户输入不会影响 text 属性。任何绑定或尝试设置 text 属性的操作仍将正常工作。
renderType : enumeration
覆盖此组件的默认渲染类型。
支持的渲染类型包括:
| 常量 | 描述 |
|---|---|
TextInput.QtRendering | 文本通过针对每个字符的可缩放距离场进行渲染。 |
TextInput.NativeRendering | 使用特定于平台的技术渲染文本。 |
TextInput.CurveRendering | 文本渲染采用直接在图形硬件上运行的曲线光栅化器。(自 Qt 6.7.0 起引入。) |
如果您希望文本在目标平台上呈现原生外观,且不需要文本变换等高级功能,请选择“TextInput.NativeRendering ”。若在“NativeRendering”渲染类型下使用此类功能,将导致渲染效果不佳,有时甚至会出现像素化现象。
TextInput.QtRendering 和TextInput.CurveRendering 都是硬件加速技术。其中QtRendering 速度更快,但占用更多内存,且在大尺寸渲染时会出现渲染瑕疵。当QtRendering 无法提供良好的视觉效果,或者需要优先降低图形内存消耗时,应考虑使用CurveRendering 作为替代方案。
默认渲染类型由QQuickWindow::textRenderType() 决定。
selectByMouse : bool
默认值为true 。
如果为 true,用户可以像往常一样使用鼠标选择文本。
注意:在 6.4 之前的版本中,默认值为 `false`;但如果你启用了此属性,也可以在触摸屏上通过手指滑动来选择文本。当在 `Flickable` 中使用 `TextInput ` 时,这会干扰快速滑动操作。 为了与TextField 保持一致,selectByMouse现在真正实现了其字面含义:如果true ,则只能通过鼠标拖动来选择文本。如果此更改不适合您的应用程序,您可以将selectByMouse 设置为false ,或者导入较旧的API版本(例如import QtQuick 6.3 )以恢复到以前的行为。 通过更改导入版本来恢复行为的选项将在 Qt 的后续版本中被移除。
selectedText : string [read-only]
此只读属性返回文本输入框中当前选中的文本。
它与以下代码片段功能相同,但速度更快且更易于使用。
myTextInput.text.toString().substring(myTextInput.selectionStart,
myTextInput.selectionEnd);selectedTextColor : color
高亮文本的颜色,用于选定内容。
selectionColor : color
文本高亮颜色,用于选中区域的背景。
selectionEnd : int [read-only]
光标位置位于当前选区中最后一个字符之后。
该属性为只读。若要更改选区,请使用 select(start,end)、selectAll() 或selectWord()。
另请参阅 selectionStart 、cursorPosition 和selectedText 。
selectionStart : int [read-only]
当前选区中第一个字符之前的光标位置。
该属性为只读。要更改选择范围,请使用 select(start,end)、selectAll() 或selectWord()。
另请参阅 selectionEnd 、cursorPosition 和selectedText 。
text : string
TextInput 中的文本。
请注意,某些键盘会使用预测功能。在这种情况下,输入法正在编写的文本不属于此属性。与预测相关的文本部分会被划线标出,并存储在preeditText 属性中。若要获取TextInput 中显示的完整文本,请使用displayText 属性。
另请参阅 clear()、displayText 、preeditText 、accepted()、editingFinished(),以及textEdited()。
validator : Validator
允许您在TextInput 上设置验证器。当设置了验证器后,TextInput 将仅接受那些能使text属性处于“可接受”或“中间”状态的输入。只有当按下Enter键时text处于“可接受”状态,才会发送“accepted”信号。
当前支持的验证器包括IntValidator 、DoubleValidator 和RegularExpressionValidator 。以下是一个使用验证器的示例,该示例允许在文本输入框中输入11到31之间的整数:
import QtQuick 2.0
TextInput{
validator: IntValidator{bottom: 11; top: 31;}
focus: true
}另请参阅 acceptableInput 和inputMask 。
wrapMode : enumeration
将此属性设置为使文本根据“TextInput ”项的宽度进行换行。只有在显式设置了宽度时,文本才会换行。
| 常量 | 描述 |
|---|---|
TextInput.NoWrap | (默认)不进行换行。如果文本中的换行符不足,则contentWidth 将超出设定的宽度。 |
TextInput.WordWrap | 仅在单词边界处进行换行。如果某个单词过长,contentWidth 将超出设定的宽度。 |
TextInput.WrapAnywhere | 换行可在行中的任意位置进行,即使是在单词中间。 |
TextInput.Wrap | 如果可能,换行将在单词边界处进行;否则,将在该行上的适当位置进行,即使是在单词中间。 |
默认设置为 `TextInput.NoWrap`。若设置了宽度,请考虑使用 `TextInput.Wrap`。
Signal 文档
accepted()
按下“Return”或“Enter”键时会发出此信号。请注意,如果文本输入框上设置了validator 或inputMask ,则只有当输入处于可接受状态时,该信号才会发出。
注意: 相应的处理程序 是onAccepted 。
另请参阅 editingFinished() 和textEdited()。
editingFinished()
当按下回车键或回退键,或者文本输入框失去焦点时,会发出此信号。请注意,如果文本输入框上设置了验证器或inputMask ,且按下了回车键或回退键,则只有当输入符合inputMask 且验证器返回可接受的状态时,才会发出此信号。
注意: 相应的处理程序 为onEditingFinished 。
另请参阅 accepted() 和textEdited()。
textEdited()
每当文本被编辑时,都会发出此信号。与textChanged() 不同,当通过编程方式更改文本时(例如,通过修改text 属性的值或调用clear() 方法),此信号不会被发出。
注意: 相应的处理程序 是onTextEdited 。
另请参阅 accepted() 和editingFinished()。
方法文档
void clear()
清除文本输入框中的内容,并重置来自输入法的部分文本输入。
请使用此方法,而不是将text 属性设置为空字符串。
另请参阅 QInputMethod::reset()。
void copy()
将当前选中的文本复制到系统剪贴板。
注意:如果 回显模式设置为“正常”以外的模式,则复制功能将无法使用。此举旨在防止用户利用复制功能绕过行控件的密码保护机制。
void cut()
将当前选中的文本复制到系统剪贴板。
注意:如果 回显模式设置为“正常”以外的模式,则“剪切”操作将无法正常工作。这是为了防止将“剪切”作为绕过行控制密码功能的一种手段。
void deselect()
取消当前文本选择。
void ensureVisible(int position)
滚动文本输入框中的内容,使指定的字符position 显示在文本输入框的边界内。
另请参阅 autoScroll 。
string getText(int start, int end)
返回位于start 和end 位置之间的文本片段。
如果起始位置(TextInput )包含分隔符(inputMask ),则长度将包含分隔符字符。
void insert(int position, string text)
将text 插入到position 上的TextInput 中。
bool isRightToLeft(int start, int end)
如果编辑器文本中位于位置start 和end 之间的部分其自然阅读方向为由右向左,则返回true 。
void moveCursorSelection(int position, SelectionMode mode)
将光标移动到position ,并根据可选参数mode 更新选区。(若仅需移动光标,请设置cursorPosition 属性。)
调用此方法时,还会将selectionStart 或selectionEnd (即前一个光标位置所在的选区)设置为指定位置。这使您可以轻松地扩展或缩小所选文本范围。
选择模式指定了选择范围是按字符还是按单词进行更新。如果未指定,选择模式将默认为TextInput.SelectCharacters 。
| 常量 | 描述 |
|---|---|
TextInput.SelectCharacters | 将selectionStart 或selectionEnd (以光标先前所在位置为准)设置为指定位置。 |
TextInput.SelectWords | 将“selectionStart ”和“selectionEnd ”设置为包含从指定位置到上一个光标位置之间的所有单词。部分位于该范围内的单词也会被包含在内。 |
例如,考虑以下调用序列:
cursorPosition = 5
moveCursorSelection(9, TextInput.SelectCharacters)
moveCursorSelection(7, TextInput.SelectCharacters)这将光标移动到第 5 个位置,将选择结束点从 5 扩展到 9,然后将选择结束点从 9 回退到 7,从而选中第 5 到 7 位置的文本(第 6 和第 7 个字符)。
如果使用TextInput.SelectWords,则会将选区起始位置扩展到第5位置之前或上的单词边界,并将选区结束位置扩展到第9位置上或之后的单词边界。
void paste()
用系统剪贴板中的内容替换当前选中的文本。
int positionAt(real x, real y, CursorPosition position)
该函数返回距离 textInput 左上角x 和y 像素处的字符位置。位置 0 位于第一个字符之前,位置 1 位于第一个字符之后但第二个字符之前,依此类推,直到位置 text.length,即所有字符之后。
这意味着,对于第一个字符之前的任何 x 值,该函数返回 0;对于最后一个字符之后的任何 x 值,该函数返回 text.length。如果 y 值位于文本上方,则返回第一行中最近字符的位置;如果 y 值位于文本下方,则返回最后一行中最近字符的位置。
光标参数 `position ` 指定了光标位置的确定方式:
| 常量 | 描述 |
|---|---|
TextInput.CursorBetweenCharacters | 返回距离 x 最近的字符之间的位置。这是默认值。 |
TextInput.CursorOnCharacter | 返回最接近 x 的字符之前的那个位置。 |
rect positionToRectangle(int pos)
该函数接受一个字符位置pos ,并返回如果光标位于该字符位置时所占用的矩形区域。
这类似于先设置cursorPosition ,然后查询光标矩形,但不会改变cursorPosition 。
void redo()
如果 `redo` 的值为 `available`,则重新执行上一条操作。
void remove(int start, int end)
从TextInput 中删除位于start 和end 位置之间的文本片段。
void select(int start, int end)
将start 到end 之间的文本选中。
如果起始位置或结束位置超出范围,则不会更改选区。
调用此方法后,selectionStart 将变为较小值,selectionEnd 将变为较大值(无论传递给此方法的顺序如何)。
另请参阅 selectionStart 和selectionEnd 。
void selectAll()
选中所有文本。
void selectWord()
选中距离当前光标位置最近的单词。
void undo()
如果 undo 的值为available ,则撤销上一次操作。取消当前的所有选择,并将选择起始位置更新为当前光标位置。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.