TextEdit QML Type
显示多行可编辑的格式化文本。更多...
属性
- activeFocusOnPress : bool
- baseUrl : url
- bottomPadding : real
- canPaste : bool
- canRedo : bool
- canUndo : bool
- color : color
- contentHeight : real
- contentWidth : real
- cursorDelegate : Component
- cursorPosition : int
- cursorRectangle : rectangle
- cursorSelection : QtQuick::TextSelection
(technology preview) - cursorVisible : bool
- 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
- hoveredLink : string
- inputMethodComposing : bool
- inputMethodHints : enumeration
- leftPadding : real
- length : int
- lineCount : int
- mouseSelectionMode : enumeration
- overwriteMode : bool
- padding : real
- persistentSelection : bool
- preeditText : string
- readOnly : bool
- renderType : enumeration
- rightPadding : real
- selectByKeyboard : bool
- selectByMouse : bool
- selectedText : string
- selectedTextColor : color
- selectionColor : color
- selectionEnd : int
- selectionStart : int
- tabStopDistance : real
- text : string
- textDocument : TextDocument
- textFormat : enumeration
- textMargin : real
- topPadding : real
- verticalAlignment : enumeration
- wrapMode : enumeration
信号
- editingFinished()
- linkActivated(string link)
- linkHovered(string link)
- textEdited()
(since 6.9)
方法
- void append(string text)
- void clear()
- void copy()
- void cut()
- void deselect()
- string getFormattedText(int start, int end)
- string getText(int start, int end)
- void insert(int position, string text)
- bool isRightToLeft(int start, int end)
- string linkAt(real x, real y)
- void moveCursorSelection(int position, SelectionMode mode)
- void paste()
- int positionAt(int x, int y)
- rectangle positionToRectangle(position)
- void redo()
- string remove(int start, int end)
- void select(int start, int end)
- void selectAll()
- void selectWord()
- void undo()
详细说明
TextEdit 控件显示一段可编辑的、格式化好的文本。
它既可以显示纯文本,也可以显示富文本。例如:
TextEdit {
width: 240
text: "<b>Hello</b> <i>World!</i>"
font.family: "Helvetica"
font.pointSize: 20
color: "blue"
focus: true
}将focus 设置为true 可使TextEdit控件获得键盘焦点。
请注意,TextEdit 并未实现滚动、跟随光标或其他特定于界面样式的行为。例如,要添加跟随光标的轻扫式滚动功能:
Flickable {
id: flick
width: 300; height: 200;
contentWidth: edit.contentWidth
contentHeight: edit.contentHeight
clip: true
function ensureVisible(r)
{
if (contentX >= r.x)
contentX = r.x;
else if (contentX+width <= r.x+r.width)
contentX = r.x+r.width-width;
if (contentY >= r.y)
contentY = r.y;
else if (contentY+height <= r.y+r.height)
contentY = r.y+r.height-height;
}
TextEdit {
id: edit
width: flick.width
focus: true
wrapMode: TextEdit.Wrap
onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
}
}特定的界面样式可能采用平滑滚动(例如使用 `SmoothedAnimation`),可能显示可见的滚动条,或者使用淡入显示位置的滚动条等。
剪贴板支持由cut()、copy() 和paste() 函数提供。除非将selectByMouse 设置为false ,否则可通过常规方式使用鼠标选择文本;除非将selectByKeyboard 设置为false ,否则可通过Shift+arrow 键盘快捷键组合选择文本。若要通过编程方式选择文本,可设置selectionStart 和selectionEnd 属性,或使用selectAll() 或selectWord()。
您可以使用positionAt() 和positionToRectangle() 在光标位置(从文档开头算起的字符数)与像素坐标之间进行转换。
另请参阅 Text 、TextInput 、TextArea 以及Qt Quick Controls - 文本编辑器。
属性文档
activeFocusOnPress : bool
TextEdit 是否应在鼠标点击时获得活动焦点。默认情况下,此选项设置为 true。
baseUrl : url
此属性指定了一个基准 URL,用于解析文本中的相对 URL。
默认值是实例化TextEdit 项的QML文件的URL。
这些属性控制内容周围的内边距。除了contentWidth 和contentHeight 之外,还会额外预留这部分空间。
canPaste : bool [read-only]
如果TextEdit 可写,且剪贴板的内容适合粘贴到TextEdit 中,则返回true。
canRedo : bool [read-only]
如果TextEdit 可写,且存在可重做的undone 操作,则返回true。
canUndo : bool [read-only]
如果TextEdit 可写,且存在可以撤销的先前操作,则返回 true。
color : color
文字颜色。
// green text using hexadecimal notation
TextEdit { color: "#00FF00" }// steelblue text using SVG color name
TextEdit { color: "steelblue" }contentHeight : real [read-only]
返回文本的高度,包括当文本无法完全容纳在设定的高度范围内时,超出该高度的部分。
contentWidth : real [read-only]
返回文本的宽度,如果设置了wrapMode ,则包括因换行不足而超出覆盖宽度的部分。
cursorDelegate : Component
TextEdit 中的光标委托。
如果为TextEdit 设置了cursorDelegate,则将使用该委托来绘制光标,而非标准光标。当需要光标时,文本编辑器会创建并管理该委托的实例,并设置该委托实例的x和y属性,使其位于当前字符左上角前方一个像素处。
请注意,代理组件的根项目必须是QQuickItem 或QQuickItem 派生的项目。
cursorPosition : int
TextEdit 中的光标位置。光标位于字符之间。
注意: 此处所指的“字符”特指 QChar 对象的字符串,即16位Unicode字符,而该位置被视为该字符串中的索引。 这并不一定对应于书写系统中的单个字母形,因为一个字母形可能由多个 Unicode 字符表示,例如在代理对、语言连字或变音符号的情况下。
cursorRectangle : rectangle [read-only]
文本编辑框中渲染标准文本光标的矩形。只读。
当光标矩形发生变化时,自定义cursorDelegate 的位置和高度会自动更新以跟随光标矩形。该委托的宽度不受光标矩形变化的影响。
cursorSelection : QtQuick::TextSelection [read-only, technology preview]
此属性处于技术预览阶段,可能会有变动。
该属性是一个对象,用于提供当前选中文本(如有)以及文本光标的属性。
该属性于 Qt 6.7 中引入。
另请参阅 selectedText 、selectionStart 以及selectionEnd 。
cursorVisible : bool
如果为真,文本编辑框将显示光标。
当文本编辑框获得活动焦点时,该属性会被设置或清除,但也可以直接设置(例如,当 KeyProxy 可能将键值转发至该编辑框时,此功能便十分有用)。
effectiveHorizontalAlignment : enumeration [read-only]
horizontalAlignment : enumeration
verticalAlignment : enumeration
设置TextEdit 项目宽度和高度范围内文本的水平和垂直对齐方式。默认情况下,文本对齐方式遵循文本的自然对齐规则,例如,从左到右阅读的文本将左对齐。
horizontalAlignment 的有效值为:
| 常量 | 描述 |
|---|---|
TextEdit.AlignLeft | 左对齐,右侧边缘不齐(默认) |
TextEdit.AlignRight | 将每行右对齐,左侧留有不规则间距 |
TextEdit.AlignHCenter | 将每行居中对齐 |
TextEdit.AlignJustify | 将每行同时向左右两边对齐,必要时拉伸单词 |
verticalAlignment 的有效值为:
| 常量 | 描述 |
|---|---|
TextEdit.AlignTop | 从项目顶部开始(默认) |
TextEdit.AlignBottom | 将最后一行对齐到底部,其余行位于其上方 |
TextEdit.AlignVCenter | 垂直居中 |
当使用附加属性LayoutMirroring::enabled 来镜像应用程序布局时,文本的水平对齐方式也会被镜像。但是,属性horizontalAlignment 将保持不变。要查询TextEdit 的实际水平对齐方式,请使用只读属性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
设置以像素为单位的字体大小。
使用此函数会使字体依赖于设备。请使用 `TextEdit::font.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() 方法来选择这些变体。
在某些情况下,为不同的轴提供自定义值也很有用。例如,如果一种字体有“常规”和“粗体”子字体,您可能希望获得介于两者之间的字重。此时,您可以通过为字体的“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 的要求(由四个 Latin-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
设置字体的字间距。
单词间距会改变单词之间的默认间距。正值会将单词间距相应地增加若干像素,而负值则会相应地减少单词间距。
hoveredLink : string [read-only]
当用户将鼠标悬停在文本中嵌入的链接上时,该属性包含链接字符串。该链接必须为富文本或 HTML 格式,且该链接字符串可引导用户访问该特定链接。
另请参阅 ` linkHovered ` 和 `linkAt()`。
inputMethodComposing : bool [read-only]
该属性用于指示TextEdit 是否已从输入法接收了部分文本输入。
在构建输入内容时,输入法可能会依赖TextEdit 发出的鼠标或键盘事件来编辑或提交部分文本。该属性可用于确定何时应禁用可能干扰输入法正常运行的事件处理程序。
inputMethodHints : enumeration
向输入法提供有关文本编辑框预期内容以及其操作方式的提示。
该值是标志位的按位组合,若未设置提示,则为 Qt.ImhNone。
会改变行为的标志包括:
| 常量 | 描述 |
|---|---|
Qt.ImhHiddenText | 应隐藏输入的字符,这通常用于输入密码时。 |
Qt.ImhSensitiveData | 活动输入法不应将输入的文本存储在任何持久存储中,例如预测性用户词典。 |
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]
返回TextEdit 项中纯文本字符的总数。
由于该数字不包含任何格式化标记,因此可能与text 属性返回的字符串长度不一致。
与查询 `text ` 属性的长度相比,该属性的执行速度可能更快,因为它无需对 `TextEdit` 的内部字符串数据进行任何复制或转换。
lineCount : int [read-only]
返回TextEdit 项中的总行数。
mouseSelectionMode : enumeration
指定如何使用鼠标选择文本。
| 常量 | 描述 |
|---|---|
TextEdit.SelectCharacters | (默认)选择范围按单个字符更新。 |
TextEdit.SelectWords | 选择范围按整个单词进行更新。 |
此属性仅在selectByMouse 为true时适用。
overwriteMode : bool
用户输入的文本是否会覆盖现有文本。
与许多文本编辑器一样,文本编辑器控件可以配置为将用户输入的新文本插入到现有文本中,或者覆盖现有文本。
如果此属性为true ,则新文本将逐字符覆盖现有文本;否则,文本将插入到光标位置,并替换现有文本。
默认情况下,此属性为“false ”(新文本不会覆盖现有文本)。
persistentSelection : bool
当TextEdit 失去焦点,被场景中的另一个项目取代时,是否应保持选中状态可见。默认情况下,此选项设置为false。
preeditText : string [read-only]
该属性包含来自输入法的部分文本输入。
若要关闭由预测功能产生的部分文本,请在inputMethodHints 中设置Qt.ImhNoPredictiveText 标志。
另请参阅 inputMethodHints 。
readOnly : bool
用户是否可以与TextEdit 控件进行交互。如果将此属性设置为true,则用户无法通过交互编辑该文本。
默认情况下,此属性为 false。
renderType : enumeration
覆盖此组件的默认渲染类型。
支持的渲染类型包括:
| 常量 | 描述 |
|---|---|
TextEdit.QtRendering | 文本通过针对每个字符的可缩放距离场进行渲染。 |
TextEdit.NativeRendering | 使用特定于平台的技术渲染文本。 |
TextEdit.CurveRendering | 文本使用直接在图形硬件上运行的曲线光栅化器进行渲染。(自 Qt 6.7.0 起引入。) |
如果您希望文本在目标平台上呈现原生效果,且不需要文本变换等高级功能,请选择TextEdit.NativeRendering 。若在 渲染类型下使用此类功能,将导致渲染效果不佳,有时甚至会出现像素化现象。
TextEdit.QtRendering 和TextEdit.CurveRendering 均属于硬件加速技术。其中QtRendering 速度更快,但占用更多内存,且在大尺寸渲染时会出现渲染瑕疵。当QtRendering 无法提供良好的视觉效果,或者需要优先降低图形内存消耗时,应考虑采用CurveRendering 作为替代方案。
默认渲染类型由QQuickWindow::textRenderType() 决定。
selectByKeyboard : bool
当编辑器可编辑时,默认值为 true;当编辑器为只读时,默认值为 false。
如果为 true,即使编辑器处于只读状态,用户也可以使用键盘选择文本;如果为 false,即使编辑器处于可编辑状态,用户也不能使用键盘选择文本。
另请参阅 readOnly 。
selectByMouse : bool
自 Qt 6.4 起,默认设置为true 。
如果设置为true ,用户可以像往常一样使用鼠标选择文本。
注意:在 6.4 之前的版本中 ,默认值为false ;但若启用此属性,用户也可在触摸屏上通过手指滑动来选择文本。当在 Flickable 控件内使用TextEdit 时,此功能会干扰轻扫操作。 不过,自 5.7 版本起,Qt 已通过QInputMethod 支持在移动平台以及使用Qt Virtual Keyboard 的嵌入式平台上使用文本选择控点。如果用户发现拖动手指能选中文本,而不是轻扫父级 Flickable,大多数用户都会感到惊讶。 因此,selectByMouse 现在真正实现了其字面含义:如果true ,则只能通过鼠标拖拽来选择文本,而系统预计会在触摸屏上提供选择控点。如果此更改不适合您的应用程序,您可以将selectByMouse 设置为false ,或者导入较旧的 API 版本(例如import QtQuick 6.3 )以恢复到以前的行为。 通过更改导入版本来恢复行为的选项将在 Qt 的后续版本中被移除。
selectedText : string [read-only]
此只读属性返回文本编辑框中当前选中的文本。
它相当于以下代码片段,但速度更快且更易于使用。
//myTextEdit is the id of the TextEdit
myTextEdit.text.toString().substring(myTextEdit.selectionStart,
myTextEdit.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 。
tabStopDistance : real
制表位之间的默认距离(以设备单位为单位)。
另请参阅 QTextOption::setTabStopDistance()。
text : string
要显示的文本。如果文本格式为“自动文本”(AutoText),则文本编辑器会自动判断该文本是否应被视为富文本。此判断是通过Qt::mightBeRichText()函数实现的。但Markdown格式的检测并非自动进行。
text属性主要适用于设置初始内容以及处理相对较小的文本内容的修改。append()、insert() 和remove() 方法提供了更精细的控制,并在修改特别大的富文本内容时能显著提升性能。
请注意,某些键盘会使用预测功能。在此情况下,输入法正在编写的文本不属于该属性的一部分。与预测相关的文本部分会被划线标出,并存储在preeditText 属性中。
如果您使用 `TextDocument::source ` 加载文本,则可以从该属性中检索已加载的文本。在这种情况下,您可以将 `textFormat ` 改为执行格式转换,从而改变 `text ` 属性的值。例如,如果 `textFormat ` 为 `RichText ` 或 `AutoText `,且您加载了一个 HTML 文件,随后将 `textFormat ` 设置为 `MarkdownText `,那么 `text ` 属性将包含从 HTML 到 Markdown 的转换结果。
另请参阅 clear()、preeditText 以及textFormat 。
textDocument : TextDocument [read-only]
返回此 `TextEdit` 的 `QQuickTextDocument `。自 Qt 6.7 起,该类已具备加载和保存文件的功能。在 C++ 中,它也可用于访问底层的 `QTextDocument ` 实例,例如用于安装 `QSyntaxHighlighter`。
另请参阅 QQuickTextDocument 。
textFormat : enumeration
text 属性的显示方式。
支持的文本格式包括:
| 常量 | 描述 |
|---|---|
TextEdit.PlainText | (默认) 所有样式标签均被视为纯文本 |
TextEdit.AutoText | 通过Qt::mightBeRichText() 启发式算法检测,或文件格式为TextDocument::source |
TextEdit.RichText | HTML 4 的子集 |
TextEdit.MarkdownText | CommonMark加上GitHub针对表格和任务列表的扩展(自 5.14 起) |
默认值为TextEdit.PlainText 。如果文本格式设置为TextEdit.AutoText ,文本编辑器将自动判断文本是否应被视为富文本。如果设置了text 属性,则使用Qt::mightBeRichText()进行判断,该函数可检测文本第一行是否存在HTML标签,但无法区分Markdown与纯文本。 如果设置了TextDocument::source 属性,则通过mime type of the file 来判断。
|
|
当设置TextEdit.MarkdownText 时,通过GitHub 复选框扩展生成的复选框支持交互式勾选。
如果设置了TextDocument::source 属性,则在加载后更改textFormat 属性将导致从检测到的格式转换为请求的格式。例如,您可以在 HTML 和 Markdown 之间进行转换。 但是,如果加载了上述任一种“富文本”格式,随后将textFormat 设置为PlainText ,则TextEdit 将显示原始标记。因此,通过适当的绑定(例如绑定到可选中的Control控件),可以让用户在“原始”编辑和所见即所得(WYSIWYG)编辑之间来回切换。
注意: WYSIWYG 模式下不支持交互式 输入标记或 Markdown 格式;但您可以切换到PlainText 进行修改,然后切换回相应的textFormat 。
注意:在 Text.MarkdownText 以及受支持的 HTML 子集下,某些装饰性元素的渲染效果与网页浏览器中不同:
- 代码块使用default monospace font ,但周围没有高亮框
- 块引用会缩进,但引用内容旁边没有竖线
textMargin : real
TextEdit 中,文本周围以像素为单位的边距。
wrapMode : enumeration
将此属性设置为使文本根据TextEdit 项的宽度进行换行。只有在显式设置了宽度时,文本才会换行。
| 常量 | 描述 |
|---|---|
TextEdit.NoWrap | (默认)不进行换行。如果文本中的换行符不足,implicitWidth 将超出设定的宽度。 |
TextEdit.WordWrap | 仅在单词边界处进行换行。如果某个单词过长,implicitWidth 将超出设定的宽度。 |
TextEdit.WrapAnywhere | 换行可在行中的任意位置进行,即使是在单词中间。 |
TextEdit.Wrap | 如果可能,换行将在单词边界处进行;否则,将在行上的适当位置进行,即使是在单词中间。 |
默认值为 `TextEdit.NoWrap`。如果您设置了宽度,请考虑使用 `TextEdit.Wrap`。
Signal 文档
editingFinished()
当文本编辑框失去焦点时,会触发此信号。
注意: 相应的处理程序 为onEditingFinished 。
linkActivated(string link)
当用户点击文本中嵌入的链接时,会触发此信号。该链接必须为富文本或HTML格式,且字符串link 用于访问该特定链接。
注意: 相应的处理程序 为onLinkActivated 。
linkHovered(string link)
当用户将鼠标悬停在文本中嵌入的链接上时,会触发此信号。该链接必须为富文本或 HTML 格式,且字符串link 可用于访问该特定链接。
注意: 相应的处理程序 是onLinkHovered 。
另请参阅 hoveredLink 和linkAt()。
[since 6.9] textEdited()
每当文本被编辑时,都会发出此信号。与textChanged() 不同,当通过编程方式更改文本时(例如,通过修改text 属性的值或调用clear()),此信号不会被触发。
注意: 相应的处理程序 是onTextEdited 。
该信号在 Qt 6.9 中引入。
方法文档
void append(string text)
使用text 在TextEdit 文件末尾追加一个新段落。
若要追加内容而不插入新段落,请改用myTextEdit.insert(myTextEdit.length, text) 。
void clear()
清除文本编辑框中的内容,并重置输入法输入的部分文本。
请使用此方法,而非将text 属性设置为空字符串。
另请参阅 QInputMethod::reset()。
void copy()
将当前选中的文本复制到系统剪贴板。
void cut()
将当前选中的文本复制到系统剪贴板。
void deselect()
取消当前的文本选择。
string getFormattedText(int start, int end)
返回位于start 和end 位置之间的文本片段。
返回的文本将根据textFormat 属性进行格式化。
string getText(int start, int end)
返回位于start 和end 位置之间的文本片段。
返回的文本不包含任何富文本格式。
void insert(int position, string text)
将text 插入到position 上的TextEdit 中。
bool isRightToLeft(int start, int end)
如果编辑器文本中位于位置start 和end 之间的部分的自然阅读方向为从右到左,则返回true 。
string linkAt(real x, real y)
返回位于点x (内容坐标系下为y )处的链接字符串;如果该点不存在链接,则返回空字符串。
另请参阅 hoveredLink 。
void moveCursorSelection(int position, SelectionMode mode)
将光标移动到position ,并根据可选参数mode 更新选区。(若仅需移动光标,请设置cursorPosition 属性。)
调用此方法时,还会将selectionStart 或selectionEnd (即前一个光标位置所在的选区)设置为指定位置。这使您可以轻松地扩展或缩小所选文本范围。
选择模式指定了选择范围是按字符还是按单词进行更新。如果未指定,选择模式将默认为TextEdit.SelectCharacters 。
| 常量 | 描述 |
|---|---|
TextEdit.SelectCharacters | 将selectionStart 或selectionEnd (以光标先前所在位置为准)设置为指定位置。 |
TextEdit.SelectWords | 将“selectionStart ”和“selectionEnd ”设置为包含从指定位置到上一个光标位置之间的所有单词。部分位于该范围内的单词也会被包含在内。 |
例如,考虑以下调用序列:
cursorPosition = 5
moveCursorSelection(9, TextEdit.SelectCharacters)
moveCursorSelection(7, TextEdit.SelectCharacters)这将光标移至第 5 个位置,将选择结束位置从 5 扩展到 9,然后将选择结束位置从 9 缩回至 7,从而选中第 5 到 7 位置之间的文本(第 6 和第 7 个字符)。
如果使用TextEdit.SelectWords执行相同的调用序列,则会将选择起始位置扩展到第5位置之前或上的一个单词边界,并将选择结束位置扩展到第9位置上或之后的一个单词边界。
void paste()
用系统剪贴板中的内容替换当前选中的文本。
int positionAt(int x, int y)
返回最接近像素位置(x ,y )的文本位置。
位置 0 位于第一个字符之前,位置 1 位于第一个字符之后、第二个字符之前,以此类推,直到位置text.length,即所有字符之后。
rectangle positionToRectangle(position)
返回文本中位于给定position 处的矩形。x、y 和 height 属性对应于描述该位置的光标。
void redo()
如果 redo 的值为available ,则重做上一次操作。
string remove(int start, int end)
从TextEdit 中删除位于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.
