> 文章列表 > QML控件和对话框之文本类控件

QML控件和对话框之文本类控件

QML控件和对话框之文本类控件

文本类控件

  • TextField
  • TextArea

TextField

TextField对应着C++中的QLineEdit,是一个单行的文本输入框,允许用户输人和编辑单行的文本。TextField可以使用cut()、copy()和paste()3个函数实现剪贴板的剪贴、复制和粘贴等操作。在粘贴之前,可以使用canPaste测试是否允许粘贴操作。

与QLineEdit类似,TextField有4种显示模式,使用echoMode属性进行设置;其
值是一个enumeration类型,允许的值包括:

  • TextInput.Normal:正常显示输入的内容,为属性默认值;
  • Textlnput.Password:密码样式,以黑点或星号显示;
  • TextInput.NoEcho:不显示任何输人
  • TextInput.PasswordEchoOnEdit:在编辑时显示为正常输人的内容,其余情况下则显示为密码样式。

TextField支持输入掩码限制输人的内容,输入掩码使用inputMask属性设置,可以利用一些特殊字符指定输入的格式和内容。也可以使用validator属性给TextField设置验证器。

ApplicationWindow {id: window; width: 800; height: 600;//  QQmlApplicationEngine加载的需要设置这个属性否则窗口会显示不出来visible: trueTextField {y: 10; width: 200// 设置占位符文本placeholderText: "Please enter a password";echoMode: TextInput.PasswordEchoOnEditvalidator: IntValidator { bottom: 11; top: 31}onAccepted: console.debug(text)}TextField {y: 40; width: 200}
}

TextArea

TextArea对应着C++中的QTextEdit,是一个多行的文本输入框。与TextField的
纯文本不同,TextArea支持富文本显示。通过textFormat属性可以设置TextArea直接
显示文本内容还是显示富文本。TextArea使用cut()、copy()和paste()这3个函数实现
剪贴板的剪贴、复制和粘贴等操作。类似传统桌面程序,可以使用鼠标选择需要操作的文
本。不过,这个特性也可以通过设置selectByMouse属性关闭。除了鼠标操作,TextArea
还支持完全使用QML.代码控制文本选择。例如,可以通过设置selectionStart和selectionEnd两个属性,控制TextArea 的选择区域,或者使用selectAll()、selectWord()这类函数。

ApplicationWindow {id: window; width: 800; height: 600;//  QQmlApplicationEngine加载的需要设置这个属性否则窗口会显示不出来visible: trueTextArea {id: textAre_1; width: 240; height: 100textFormat: TextEdit.RichTextfont.pointSize: 13text: "<b>hello</b><i>world !</i>"}TextArea {id: textAre_2; y: 100; width: 240textFormat: TextEdit.PlainTexttext: "<b>hello</b><i>world !</i>"}
}