0%

TextEdit属性说明

继承自 Item
相关控件:TextInput

TextEdit在文本编辑项显示可编辑的,格式化的文本块。它可以显示纯文本和富文本。

本文: https://www.lovejia.win/blog/article/TextEdit.html
参考原文:http://doc.qt.io/qt-5/qml-qtquick-textedit.html
参考译文:http://blog.csdn.net/u012419303/article/details/45419321

属性说明

activeFocusOnPress : bool

无论是文字编辑应该在按下鼠标获得主动对焦。默认情况下,设置为true。

baseUrl : url

此属性指定基本URL,用于解析文本中的相对URL。
默认值是实例化TextEdit项的QML文件的url 。

bottomPadding : real / leftPadding : real / padding : real / rightPadding : real / topPadding : real

这些属性在内容周围保留了填充。除了contentWidth和contentHeight之外,还保留了此空间。

canPaste : bool

如果返回true 的TextEdit可写和剪贴板的内容适用于粘贴到的TextEdit。

canRedo : bool

如果TextEdit是可写的并且有可以重做的撤销操作,则返回true。

canUndo : bool

如果TextEdit是可写的并且有以前可以撤消的操作,则返回true。

color : color

文本颜色。

contentHeight:real

返回文本的高度,包括如果文本不适合设置的高度,则覆盖的高度。

contentWidth:real

返回文本的宽度,包括由于包装不足而覆盖的宽度(如果设置了wrapMode)。

cursorDelegate : Component

在TextEdit中的游标的委托。
如果为TextEdit设置cursorDelegate,此代理将用于绘制光标而不是标准光标。当需要游标时,将由TextInput创建和管理委托的实例,并且将委托实例的x属性设置为当前字符左上角之前的一个像素。
注意:代理组件的根项必须是QQuickItem或QQuickItem派生项。

cursorPosition : int

光标在TextEdit中的位置。

cursorRectangle : rectangle

在TextEdit中呈现标准文本光标的矩形,只读。
自定义cursorDelegate的位置和高度会更新为在cursorRectangle更改后自动跟随它。委托的宽度不受光标矩形中的更改的影响。

cursorVisible : bool

如果为true,则TextEdit显示光标。
此属性在TextEdit获得活动焦点时设置和取消设置,但也可以直接设置(例如,如果KeyProxy可能将键转发给它)。

effectiveHorizontalAlignment : enumeration / horizontalAlignment : enumeration / verticalAlignment : enumeration

设置TextEdit项目的宽度和高度内的文本的水平和垂直对齐。默认情况下,文本对齐方式遵循文本的自然对齐方式,例如从左到右读取的文本将向左对齐。
对horizontalAlignment的有效值是:
TextEdit.AlignLeft (默认)
TextEdit.AlignRight
TextEdit.AlignHCenter
TextEdit.AlignJustify

verticalAlignmen的有效值是:
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.family : string

设置字体的家族名称。
家族名称不区分大小写,并且可以可选地包括铸造厂名称,例如“Helvetica [Cronyx]”。如果该系列可从多个铸造厂获得,并且未指定铸造厂,则选择任意铸造厂。如果该族不可用,则将使用字体匹配算法来设置族。

font.hintingPreference : enumeration

设置文本的首选提示。这是一个暗示底层文本呈现系统使用一定水平的提示,并且跨平台有不同的支持。有关更多详细信息,请参阅QFont :: HintingPreference的文档中的表。
注意:此属性只有与渲染类型Text.NativeRendering一起使用时才有效。
Font.PreferDefaultHinting - 为目标平台使用默认提示级别。
Font.PreferNoHinting - 如果可能,渲染文本而不暗示字形的轮廓。文本布局将是排版准确的,使用与打印时使用的相同的度量。
Font.PreferVerticalHinting - 如果可能,渲染文本没有水平提示,但将字形对齐到垂直方向的像素网格。文本将在密度太低而不能准确呈现字形的显示器上显得更清晰。但是,由于字形的水平度量是未暗示的,所以文本的布局将可以扩展到更高密度的设备(例如打印机),而不影响诸如换行之类的细节。
Font.PreferFullHinting - 如果可能,在水平和垂直方向呈现文本提示。文本将被改变以优化目标设备上的可读性,但是由于度量将取决于文本的目标大小,字形,换行符和其他印刷细节的位置将不会缩放,这意味着文本布局可以看起来在具有不同像素密度的设备上不同。

font.italic : bool

设置字体是否具有斜体样式。

font.letterSpacing : real

设置字体的字母间距。
字母间距更改字体中各个字母之间的默认间距。正值通过相应的像素增加字母间距; 负值减小间距。

font.pixelSize : int

以像素为单位设置字体大小。
使用此功能使字体设备相关。用于pointSize以与设备无关的方式设置字体的大小。

font.pointSize : real

以点为单位设置字体大小。点大小必须大于零。

font.strikeout : bool

设置字体是否具有删除样式。

font.styleName : string

设置字体的样式名称。
样式名称不区分大小写。如果设置,字体将匹配样式名称,而不是字体属性font.weight,font.bold和font.italic。

font.underline : bool

设置文本是否带下划线。

font.weight : enumeration

设置字体的权重。
权重可以是下列之一:
Font.Thin
Font.Light
Font.ExtraLight
Font.Normal - 默认值
Font.Medium
Font.DemiBold
Font.Bold
Font.ExtraBold
Font.Black

font.wordSpacing : real

设置字体的字间距。
字间距会更改单个字词之间的默认间距。正值将字间距增加对应的像素量,而负值相应地减小字间距。

当用户悬停嵌入在文本中的链接时,此属性包含链接字符串。链接必须是富文本格式或HTML格式,链接字符串提供对特定链接的访问。

inputMethodComposing : bool

此属性保存TextEdit是否具有来自输入法的部分文本输入。
当它组成输入法时,可以依靠来自TextEdit的鼠标或键事件来编辑或提交部分文本。此属性可用于确定何时禁用可能干扰输入法正确操作的事件处理程序。

inputMethodHints : enumeration

向输入法提供有关TextEdit的预期内容及其应如何操作的提示。
如果没有设置提示,则该值是标志或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

返回TextEdit项中纯文本字符的总数。
由于此数字不包括任何格式化标记,因此它可能与text属性返回的字符串的长度不同。
此属性可以比查询文本属性的长度更快,因为它不需要任何复制或转换TextEdit的内部字符串数据。

lineCount : int

返回TextEdit项中的总行数。

mouseSelectionMode : enumeration

指定如何使用鼠标选择文本。
TextEdit .SelectCharacters - 选择使用单个字符更新。(默认)
TextEdit .SelectWords - 选择将使用整个字词更新。
此属性仅在selectByMouse为true 时适用。

overwriteMode : bool

用户输入的文本是否覆盖现有文本。
与许多文本编辑器一样,文本编辑器小部件可以被配置为用用户输入的新文本插入或覆盖现有文本。
如果此属性是true,现有文本将被新文本覆盖,字符为字符;否则,将在光标位置插入文本,替换现有文本。
默认情况下,此属性为false(新文本不覆盖现有文本)。

persistentSelection : bool

persistentSelection:bool
无论是TextEdit应该保持选择可见,当它失去活动焦点场景中的其他项目。默认情况下,这被设置为false。

preeditText : string

此属性包含来自输入法的部分文本输入。

readOnly:bool

用户是否可以与TextEdit项目进行交互。如果此属性设置为true,则无法通过用户交互来编辑文本。

renderType : enumeration

覆盖此组件的默认渲染类型。
支持的渲染类型有:
Text.QtRendering - 默认值
Text.NativeRendering
如果希望文本在目标平台上看起来是原生的,并且不需要高级功能(如文本转换),选择Text.NativeRendering。将这些特性与NativeRendering渲染类型结合使用将提供较差的和有时像素化的结果。

selectByKeyboard:bool

编辑器可编辑时默认为true,只读时默认为false。
如果为true,即使编辑器为只读,用户也可以使用键盘选择文本。如果为false,则即使编辑器可编辑,用户也不能使用键盘来选择文本。

selectByMouse:bool

默认为false。
如果为true,用户可以使用鼠标以某种平台特定的方式选择文本。
注意:对于一些平台,这可能不是一个适当的交互;它可能与文本需要在Flickable内部表现的冲突。

selectedText:string

此只读属性提供文本编辑中当前选择的文本。

selectedTextColor:color

所选文字颜色,用于选择。

selectionColor:color

文本突出显示颜色,在选择后使用。

selectionEnd:int

光标位置在当前选择中的最后一个字符之后。
此属性为只读。要更改选择,请使用select(start,end),selectAll()或selectWord()。

selectionStart:int

当前选择中第一个字符之前的光标位置。
此属性为只读。要更改选择,请使用select(start,end),selectAll()或selectWord()。

text:string

要显示的文本。如果文本格式为自动文本,则文本编辑将自动确定文本是否应被视为富文本。这个确定是使用Qt :: mightBeRichText()。
text属性主要适用于设置初始内容和处理对相对较小的文本内容的修改。该追加() ,插入()和删除()方法提供了更精细的控制和修改特别是大富文本内容显着更好的性能。

textDocument:TextDocument

返回此TextEdit的QQuickTextDocument。它可以用于使用QSyntaxHighlighter实现语法高亮。

textFormat:enumeration

应显示文本属性的方式。
TextEdit.AutoText
TextEdit.PlainText
TextEdit.RichText
默认值为TextEdit .PlainText。如果文本格式为TextEdit.AutoText,文本编辑将自动确定文本是否应被视为富文本。这个确定是使用Qt :: mightBeRichText()。

textMargin:real

文本编辑中文本周围的边距(以像素为单位)。

wrapMode:enumeration

设置此属性以将文本包装到TextEdit项的宽度。如果已经设置了显式宽度,文本将会换行。
TextEdit.NoWrap - 不执行换行。如果文本包含不足的换行符,则implicitWidth将超过设置的宽度。
TextEdit.WordWrap - 仅在字边界上进行换行。如果单词太长,implicitWidth将超过设置的宽度。
TextEdit.WrapAnywhere - 换行在一行上的任何点完成,即使它发生在一个单词的中间。
TextEdit.Wrap -如果可能的话,包裹发生在单词边界; 否则它将发生在线上的适当点,即使在单词的中间。
默认值为TextEdit.NoWrap。如果设置宽度,请考虑使用TextEdit.Wrap。

信号说明

editingFinished()

当文本编辑失去焦点时,发出此信号。
相应的处理程序是onEditingFinished。

linkActivated(string link)

当用户点击嵌入在文本中的链接时,发出此信号。链接必须是富文本格式或HTML格式,链接字符串提供对特定链接的访问。
相应的处理程序是onLinkActivated。

linkHovered(string link)

当用户悬停嵌入在文本中的链接时,发出此信号。链接必须是富文本格式或HTML格式,链接字符串提供对特定链接的访问。
相应的处理程序是onLinkHovered。

方法说明

void append(string text)

将一个带有文本的新段落附加到TextEdit的末尾。
为了附加而不插入新的段落,myTextEdit.insert(myTextEdit.length, text)而是调用。

clear()

清除文本编辑的内容,并从输入法重置部分文本输入。
使用此方法,而不是将text属性设置为空字符串。

copy()

将当前选择的文本复制到系统剪贴板。

cut()

将当前选定的文本移动到系统剪贴板。

deselect()

删除活动文本选择。

string getFormattedText(int start,int end)

返回开始和结束位置之间的文本部分。
返回的文本将根据textFormat属性进行格式化。

string getText(int start,int end)

返回开始和结束位置之间的文本部分。
返回的文本不包含任何富文本格式。

insert(int position,string text)

在文本位置插入文本。

isRightToLeft(int start,int end)

如果在位置开始和结束之间找到的编辑器文本的自然读取方向是从右到左,则返回true 。

linkAt(real x,real y)

返回在内容坐标中的点x,y处的链接字符串,如果在该点没有链接,则返回空字符串。

moveCursorSelection(int position,SelectionMode mode = TextEdit.SelectCharacters)

将光标移动到位置,并根据可选模式参数更新选择。(要只移动光标,请设置cursorPosition属性。)
当调用此方法时,它另外将selectionStart或selectionEnd(无论位于上一个光标位置)设置为指定的位置。这允许您轻松地扩展和收缩所选的文本范围。
选择模式指定是基于每个字符还是每个字更新选择。如果没有指定,选择模式将默认为TextEdit.SelectCharacters。。
TextEdit.SelectCharacters - 将selectionStart或selectionEnd(无论位于上一光标位置)设置为指定的位置。
TextEdit.SelectWords - 设置selectionStart和selectionEnd以包括指定位置和上一光标位置之间的所有单词。包括部分在范围中的字。

paste()

将当前选定的文本替换为系统剪贴板的内容。

int positionAt(int x,int y)

返回最接近像素位置(x,y)的文本位置。
位置0在第一个字符之前,位置1在第一个字符之后但在第二个字符之前,依此类推,直到位置文本position text.length,它在所有字符之后。

rectangle positionToRectangle ( position )

返回文本中给定位置的矩形。x,y和height属性对应于描述该位置的光标。

redo()

如果重做可用,则重做上一个操作。

string remove(int start,int end)

从TextEdit中删除位于开始和结束位置之间的文本部分。

select(int start,int end)

使文本从开始到结束被选中。
如果开始或结束超出范围,则不会更改选择。
调用后,selectionStart将变为较小,而selectionEnd将变为较大(不管传递给此方法的顺序如何)。

selectAll()

导致选择所有文本。

selectWord()

导致选择最接近当前光标位置的单词。

undo()

如果撤销可用,则撤销上一操作。取消选择任何当前选择,并将选择开始更新为当前光标位置。

功能简述

TextEdit显示可编辑的、格式化的文本块。可以显示纯文本和富文本。

下面的例子TextEdit显示文本:

1
2
3
4
5
6
7
8
9
import QtQuick 2.0  
TextEdit {
width: 240
text: "<b>Hello</b> <i>World!</i>"
font.family: "Helvetica"
font.pointSize: 20
color: "blue"
focus: true
}

下面的例子使用Flickable元素启用TextEdit项目来提供滚动实现光标跟随:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Flickable {
id: flick

width: 300; height: 200;
contentWidth: edit.paintedWidth
contentHeight: edit.paintedHeight
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
height: flick.height
focus: true
wrapMode: TextEdit.Wrap
onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
}
}

特定的外观和感觉可以使用平滑滚动(例如,使用SmoothedAnimation),可以具有可见的滚动条或滚动以显示位置的滚动条等。
剪贴板支持由cut(),copy()和paste()函数提供,选择可以通过设置selectByMouse或通过操作selectionStart和selectionEnd从QML 完全处理的传统“鼠标”机制处理,或使用selectAll()或selectWord()。
可以使用positionAt()和positionToRectangle()在光标位置(从文档开头开始的字符)和像素点之间进行转换。

下面例子显示selectedText提供当前在文本输入中选择的文本:

1
2
myTextInput.text.toString().substring(myTextInput.selectionStart,
myTextInput.selectionEnd);

下面示例显示文本属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Column {
TextEdit {
font.pointSize: 24
text: "<b>Hello</b> <i>World!</i>"
}
TextEdit {
font.pointSize: 24
textFormat: TextEdit.RichText
text: "<b>Hello</b> <i>World!</i>"
}
TextEdit {
font.pointSize: 24
textFormat: TextEdit.PlainText
text: "<b>Hello</b> <i>World!</i>"
}
}

下面的例子显示采取这个调用顺序将光标移动到位置:

1
2
3
cursorPosition = 5
moveCursorSelection(9, TextInput.SelectCharacters)
moveCursorSelection(7, TextInput.SelectCharacters)

这将光标移动到位置5,将选择结束从5扩展到9,然后将选择结束从9缩回到7,留下选择位置5到7的文本(第6和第7个字符)。
与TextInput .SelectWords 相同的序列将在位置5之前或之前将选择开始扩展到字边界,并将选择结束扩展到位置9上或超过位置9的字边界。

------本文结束    感谢阅读------
你打赏你的,我分享我的!