继承自 Item
相关控件:
TextInput类型显示可编辑的纯文本的单行。TextInput用于接受一行文本输入。输入约束可以放置在TextInput项(例如,通过验证器或inputMask),并将echoMode设置为适当的值,可以将TextInput用于密码输入字段。
本文: https://www.lovejia.win/blog/article/TextInput.html
参考原文:http://doc.qt.io/qt-5/qml-qtquick-textinput.html
参考译文:http://blog.csdn.net/u012419303/article/details/45419455
属性说明
acceptableInput : bool
除非已设置验证器或输入掩码,否则此属性始终为true。如果验证器或输入掩码已定,这个属性只会在当前的文本是验证器或输入掩码可以接受的最后一个字符串是真的(不是作为一个中间的字符串)。
activeFocusOnPress : bool
无论的TextInput应在按下鼠标获得主动对焦。默认情况下,设置为true。
autoScroll : bool
当文本长度大于宽度时,TextInput是否应该滚动。默认情况下,设置为true。
bottomPadding : real / leftPadding : real / padding : real / rightPadding : real / topPadding : real
这些属性在内容周围保留了填充。除了contentWidth和contentHeight之外,还保留了此空间。
canPaste : bool
如果返回true 的TextInput可写和剪贴板的内容适用于粘贴到的TextInput。
canRedo : bool
如果TextInput是可写的并且有可以重做的撤销操作,则返回true 。
canUndo : bool
如果TextInput是可写的并且有以前可以撤消的操作,则返回true 。
color : color
文本颜色。
contentHeight:real
返回文本的高度,包括如果文本不适合设置的高度,则覆盖的高度。
contentWidth:real
返回文本的宽度,包括由于包装不足而覆盖的宽度(如果设置了wrapMode)。
cursorDelegate : Component
在TextInput中的游标的委托。
如果为TextInput设置cursorDelegate,此代理将用于绘制光标而不是标准光标。当需要游标时,将由TextInput创建和管理委托的实例,并且将委托实例的x属性设置为当前字符左上角之前的一个像素。
注意:代理组件的根项必须是QQuickItem或QQuickItem派生项。
cursorPosition : int
光标在TextInput中的位置。
cursorRectangle : rectangle
在TextInput中呈现标准文本光标的矩形,只读。
自定义cursorDelegate的位置和高度会更新为在cursorRectangle更改后自动跟随它。委托的宽度不受光标矩形中的更改的影响。
cursorVisible : bool
当TextInput显示游标时设置为true 。
当TextInput获取活动焦点时,此属性被设置和取消设置,因此其他属性可以绑定到当前是否显示光标。由于它自动设置和取消设置,当您自己设置值时,您必须记住,您的值可能会被覆盖。
它可以直接在脚本中设置,例如,如果一个KeyProxy可能转发键,并希望它看起来活动,当这一切发生的时候(但实际上没有给它主动焦点),它不应该直接设置在项目上。
displayText : string
这是在所显示的文本的TextInput。
如果echoMode设置为TextInput :: Normal,则此值与TextInput :: text属性的值相同。否则,此属性保存用户可见的文本,而text属性保存实际输入的文本。
注意:与TextInput :: text属性不同,它包含来自输入法的部分文本输入。
echoMode : enumeration
指定文本应如何在TextInput中显示。
TextInput .Normal - 显示文本。(默认)
TextInput .Password - 显示平台相关的密码掩码字符,而不是实际的字符。
TextInput .NoEcho - 不显示任何内容。
TextInput .PasswordEchoOnEdit - 显示编辑时输入的字符,否则显示相同TextInput.Password。
effectiveHorizontalAlignment : enumeration / horizontalAlignment : enumeration / verticalAlignment : enumeration
设置TextInput项目的宽度和高度内的文本的水平对齐方式。默认情况下,文本对齐方式遵循文本的自然对齐方式,例如从左到右读取的文本将向左对齐。
TextInput没有垂直对齐,因为自然高度正好是单行文本的高度。如果手动将高度设置为更大的值,TextInput将始终垂直顶部对齐。您可以使用定位点在其他项目中对齐它。
对horizontalAlignment的有效值是text.alignleft,text.alignright,text.alignhcenter和text.alignjustify。verticalAlignmen的有效值是text.aligntop,text.alignbottom和text.alignvcenter。
当使用附加属性LayoutMirroring::enabled以镜像应用程序布局时,文本的水平对齐也将被镜像。但是,horizontalAlignment将保持不变。要查询TextInput的有效水平对齐,请使用只读属性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
设置字体的字间距。
字间距会更改单个字词之间的默认间距。正值将字间距增加对应的像素量,而负值相应地减小字间距。
inputMask : string
允许您在TextInput上设置输入掩码,限制允许的文本输入。见 QLineEdit::inputMask进一步的细节,因为完全相同的面具串所用的TextInput。
inputMethodComposing : bool
此属性保存TextInput是否具有来自输入法的部分文本输入。
当它组成输入法时,可以依靠来自TextInput的鼠标或键事件来编辑或提交部分文本。此属性可用于确定何时禁用可能干扰输入法正确操作的事件处理程序。
inputMethodHints : enumeration
向输入法提供有关文本输入的预期内容及其应如何操作的提示。
该值是标志的按位组合,如果没有设置提示,则为Qt.ImhNone。
改变行为的标志是:
Qt.ImhHiddenText - 字符应该隐藏,通常在输入密码时使用。设置时,此自动设置echoMode来TextInput.Password。
Qt.ImhSensitiveData - 键入的文本不应该由活动输入法存储在任何持久存储像预测用户字典。
Qt.ImhNoAutoUppercase - 输入法不应该尝试在句子结束时自动切换到大写。
Qt.ImhPreferNumbers - 数字是首选(但不是必需)。
Qt.ImhPreferUppercase - 大写字母是首选(但不是必需)。
Qt.ImhPreferLowercase - 小写字母是首选(但不是必需)。
Qt.ImhNoPredictiveText - 在输入时不要使用预测文本(即字典查找)。
Qt.ImhDate - 文本编辑器作为日期字段。
Qt.ImhTime - 文本编辑器作为时间字段。
Qt.ImhMultiLine - 当按下Return或Enter键时(从QtQuick 2.4起),文本编辑器不关闭软件输入键盘。
限制输入的标志(独占标志)为:
Qt.ImhDigitsOnly - 只允许数字。
Qt.ImhFormattedNumbersOnly - 只允许输入数字。这包括小数点和减号。
Qt.ImhUppercaseOnly - 只允许大写字母输入。
Qt.ImhLowercaseOnly - 只允许小写字母输入。
Qt.ImhDialableCharactersOnly - 只允许适用于电话拨号的字符。
Qt.ImhEmailCharactersOnly - 只允许适用于电子邮件地址的字符。
Qt.ImhUrlCharactersOnly - 只允许适用于URL的字符。
面具:
Qt.ImhExclusiveInputMask - 如果使用任何独占标志,此掩码会产生非零。
length : int
返回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
设置在使用密码字符掩码可见字符之前的延迟(以毫秒为单位)。
复位方法将通过分配未定义来调用。
persistentSelection : bool
无论的TextInput应该保持它的选择,当它失去活动焦点场景中的其他项目。
默认情况下,这被设置为false。
preeditText : string
此属性包含来自输入法的部分文本输入。
readOnly : bool
设置用户输入是否可以修改TextInput的内容。
如果readOnly设置为true,则用户输入不会影响text属性。任何绑定或尝试设置text属性仍然可以工作。
renderType : enumeration
覆盖此组件的默认渲染类型。
支持的渲染类型有:
Text.QtRendering - 默认值
Text.NativeRendering
如果希望文本在目标平台上看起来是原生的,并且不需要高级功能(如文本转换),选择Text.NativeRendering。将这些特性与NativeRendering渲染类型结合使用将提供较差的和有时像素化的结果。
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
TextInput中的文本。
validator : Validator
允许您在TextInput上设置验证器。当设置验证器时,TextInput将只接受使文本属性处于可接受或中间状态的输入。只有在按下enter时,文本处于可接受状态,才会发送接受的信号。
目前支持的验证器是:
IntValidator - 整型验证器
DoubleValidator - 非整形验证器
RegExpValidator - 正则表达式验证器
wrapMode : enumeration
设置此属性以将文本包装到TextInput项的宽度。如果已经设置了显式宽度,文本将会换行。
TextInput.NoWrap - 不执行换行。如果文本包含不足的换行符,则implicitWidth将超过设置的宽度。
TextInput.WordWrap - 仅在字边界上进行换行。如果单词太长,implicitWidth将超过设置的宽度。
TextInput.WrapAnywhere - 换行在一行上的任何点完成,即使它发生在一个单词的中间。
TextInput.Wrap - 如果可能,包装发生在字边界; 否则它将发生在线上的适当点,即使在单词的中间。
默认值为TextInput.NoWrap。如果设置宽度,请考虑使用TextInput.Wrap。
信号说明
accepted( )
当按下Return或Enter键时,发出此信号。
注意:如果在文本输入上设置了验证器或输入掩码,则只有在输入处于可接受状态时才会发出信号。
相应的处理程序是onAccepted。
editingFinished( )
当按下Return或Enter键或文本输入失去焦点时,发出此信号。
注意:如果在文本输入上设置了验证器或inputMask,并且按下了enter / return,则只有在输入跟随inputMask并且验证器返回可接受状态时,才会发出此信号。
相应的处理程序是onEditingFinished。
方法说明
clear( )
清除文本输入的内容,并从输入法重置部分文本输入。
使用此方法,而不是将text属性设置为空字符串。
copy()
将当前选择的文本复制到系统剪贴板。
注意:如果回波模式设置为正常以外的模式,则复制将不工作。这是为了防止使用复制作为绕过线路控制的密码功能的方法。
cut()
将当前选定的文本移动到系统剪贴板。
注意:如果回波模式设置为除Normal之外的模式,则切割将不工作。这是为了防止使用cut作为绕过线路控制的密码功能的方法。
deselect()
删除活动文本选择。
ensureVisible(int position)
滚动文本输入的内容,以使指定的字符位置在文本输入的边界内可见。
string getText(int start,int end)
返回开始和结束位置之间的文本部分。
如果TextInput有一个inputMask,长度将包括掩码字符。
insert(int position,string text)
将文本插入到TextInput的位置。
isRightToLeft(int start,int end)
如果在位置开始和结束之间找到的编辑器文本的自然读取方向是从右到左,则返回true 。
moveCursorSelection(int position,SelectionMode mode = TextInput.SelectCharacters)
将光标移动到位置,并根据可选模式参数更新选择。(要只移动光标,请设置cursorPosition属性。)
当调用此方法时,它另外将selectionStart或selectionEnd(无论位于上一个光标位置)设置为指定的位置。这允许您轻松地扩展和收缩所选的文本范围。
选择模式指定是基于每个字符还是每个字更新选择。如果未指定,则选择模式将默认为TextInput .SelectCharacters。
TextInput .SelectCharacters - 将selectionStart或selectionEnd(无论在上一个光标位置)设置为指定的位置。
TextInput .SelectWords - 设置selectionStart和selectionEnd以包括指定位置和上一光标位置之间的所有字。包括部分在范围中的字。
paste()
将当前选定的文本替换为系统剪贴板的内容。
int positionAt(real x,real y,CursorPosition position = CursorBetweenCharacters)
此函数返回从textInput的左上角开始的x和y像素处的字符位置。位置0在第一个字符之前,位置1在第一个字符之后但在第二个字符之前,依此类推,直到位置text.length,它在所有字符之后。
这意味着对于第一个字符之前的所有x值,此函数返回0,并且对于最后一个字符之后的所有x值,此函数返回text.length。如果y值高于文本,则位置将是第一行上最接近的字符的位置,并且如果它在文本下方,则将返回最后一行上最近的字符的位置。
光标位置类型指定应如何解析光标位置。
TextInput .CursorBetweenCharacters - 返回最接近x的字符之间的位置。
TextInput .CursorOnCharacter - 返回最接近x的字符之前的位置。
rect positionToRectangle( int pos)
此函数采用字符位置,并返回光标将占据的矩形,如果它放在该字符位置。
这类似于设置cursorPosition,然后查询游标矩形,但cursorPosition不更改。
redo()
如果重做可用,则重做上一个操作。
remove(int start,int end)
从TextInput中删除位于开始和结束位置之间的文本部分。
select(int start,int end)
使文本从开始到结束被选中。
如果开始或结束超出范围,则不会更改选择。
调用后,selectionStart将变为较小,而selectionEnd将变为较大(不管传递给此方法的顺序如何)。
selectAll()
导致选择所有文本。
selectWord()
导致选择最接近当前光标位置的单词。
undo()
如果撤销可用,则撤销上一操作。取消选择任何当前选择,并将选择开始更新为当前光标位置。
功能简述
TextInput类型显示可编辑的纯文本的单行。
TextInput用于接受一行文本输入。输入约束可以放置在TextInput项(例如,通过验证器或inputMask),并将echoMode设置为适当的值,可以将TextInput用于密码输入字段。
在macOS上,Home / End的向上/向下键绑定被显式禁用。如果你想要这样的绑定(在任何平台上),你将需要在QML中构造它们。
例
下面的例子中当TextInput获得活动焦点时,光标仍然可见:
1 | import QtQuick 2.0 |
下面的例子设置文本的大小写:
1 | TextInput { |
下面的例子显示设置文本的首选提示与渲染类型Text.NativeRendering一起使用时才有效:
1 | TextInput { |
下面的例子设置字体权重:
1 | TextInput { |
下面例子显示selectedText提供当前在文本输入中选择的文本:
1 | myTextInput.text.toString().substring(myTextInput.selectionStart, |
下面示例使用验证器,它允许将11和31之间的整数输入到文本输入中:
1 | import QtQuick 2.0 |
下面的例子显示采取这个调用顺序将光标移动到位置:
1 | cursorPosition = 5 |
这将光标移动到位置5,将选择结束从5扩展到9,然后将选择结束从9缩回到7,留下选择位置5到7的文本(第6和第7个字符)。
与TextInput .SelectWords 相同的序列将在位置5之前或之前将选择开始扩展到字边界,并将选择结束扩展到位置9上或超过位置9的字边界。