【Qt QML入门】TextInput

news2024/11/29 0:36:23

    TextInput:单行文本输入框。
    TextInput除了光标和文本外,默认没有边框等效果。

import QtQuick
import QtQuick.Window
import QtQuick.Controls

Window {
    id: win
    width: 800
    height: 600
    visible: true
    title: qsTr("Hello World")

    //单行文本输入框
    //TextInput除了光标和文本外,默认没有边框等效果
    TextInput {
        anchors.centerIn: parent
        text: "this is a textinout"
    }
}

我们可以自己给它加一个边框:

import QtQuick
import QtQuick.Window
import QtQuick.Controls

Window {
    id: win
    width: 800
    height: 600
    visible: true
    title: qsTr("Hello World")

    Rectangle {
        anchors.centerIn: parent
        width: 200
        height: 50
        color: "transparent"
        border.width: 1
        border.color: "red"
        //单行文本输入框
        //TextInput除了光标和文本外,默认没有边框等效果
        TextInput {
            anchors.margins: 1
            text: "this is a textinput control!"
        }
    }
} 

leftPadding设置为10,效果如下:

 topPadding设置为10,效果如下:

bottomPadding : real

leftPadding : real

padding : real

rightPadding : real

topPadding : real

注意: 如果为TextInput指定了显式的宽度或高度,则必须注意确保它足够大,以容纳相关的填充值。例如:如果topPadding和bottomPadding设置为10,但是TextInput的高度仅设置为20,则文本将没有足够的垂直空间来呈现,会被剪切显示。

effectiveHorizontalAlignment : enumeration

horizontalAlignment : enumeration

verticalAlignment : enumeration

设置文本在textput项目的宽度和高度内的水平对齐方式。默认情况下,文本对齐遵循文本的自然对齐,例如,从左到右读取的文本将向左对齐。
TextInput没有垂直对齐,因为自然高度正是单行文本的高度。如果您手动将高度设置为更大的值,则TextInput将始终顶部垂直对齐。您可以使用锚来对齐它,但你想在另一个项目。
horizontalAlignment的有效值是TextInput.AlignLeft、TextInput.AlignRight和TextInput.AlignHCenter。
垂直对齐的有效值是TextInput.AlignTop(默认),TextInput.AlignBottom、TextInput.AlignVCenter。
当使用附加属性LayoutMirroring::enabled来镜像应用程序布局时,文本的水平对齐也将被镜像。但是,属性horizontalAlignment将保持不变。要查询TextInput的有效水平对齐方式,请使用只读属性effectiveHorizontalAlignment。

activeFocusOnPress : bool

TextInput是否应该在鼠标按下时获得活动焦点。默认情况下,此设置为true。

autoScroll : bool

当文本长度大于宽度时,TextInput是否应该滚动。默认情况下,此设置为true。

canPaste : bool

如果TextInput是可写的,并且剪贴板的内容适合粘贴到TextInput中,则返回true。

canRedo : bool

如果TextInput是可写的,并且存在可重做的未完成操作,则返回true。

color : color

文本颜色。

contentHeight : real

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

contentWidth : real

如果设置了wrapMode,则返回文本的宽度,包括超过由于换行不足而覆盖的宽度。

cursorDelegate : Component

TextInput中光标的委托。

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

cursorPosition : int

TextInput中光标的位置。

cursorRectangle : rectangle

在文本输入中呈现标准文本游标的矩形。只读的。

自定义cursorDelegate的位置和高度会随着cursorRectangle的变化而自动更新。委托的宽度不受

光标矩形更改的影响。

cursorVisible : bool

当TextInput显示光标时设置为true。当TextInput获得活动焦点时设置和取消该属性,以便可以将其他属性绑定到光标当前是否显示。因为它可以自动设置和取消设置,所以当您自己设置该值时,必须记住您的值可能会被覆盖。
它可以直接在脚本中设置,例如,如果KeyProxy可能会向它转发密钥,并且您希望它在发生这种情况时看起来是活动的(但实际上没有给它活动焦点)。
它不应该像下面的QML一样直接在项目上设置,因为指定的值将在焦点更改时被覆盖并丢失。

displayText : string

这是在TextInput中显示的文本。
如果echoMode被设置为TextInput::Normal,它的值与TextInput::text属性的值相同。否则,此属性保存对用户可见的文本,而text属性保存实际输入的文本。

echoMode : enumeration

指定文本应该如何在TextInput中显示。

TextInput.Normal-按原样显示文本。(默认)
TextInput.Password-显示平台相关的密码掩码字符,而不是实际字符。
TextInput.NoEcho -不显示任何内容。
TextInput.PasswordEchoOnEdit -在编辑时显示输入的字符,否则与TextInput.Password相同

font.bold : bool

文本加粗。

font.capitalization : enumeration

设置文本的大写。
Font.MixedCase:这是不应用大小写变化的普通文本呈现选项。
Font.AllUppercase:这将文本更改为以全大写类型呈现。
Font.AllLowercase:将文本改为以全小写字体呈现。
Font.SmallCaps:这将文本更改为以小大写类型呈现。
Font.Capitalize:这将改变文本,使每个单词的第一个字符为大写字符

font.family : string

设置字体的家族名称。

font.hintingPreference : enumeration

在文本上设置首选提示。注意:此属性仅在与渲染类型TextInput.NativeRendering一起使用时有效。

Font.PreferDefaultHinting:使用目标平台的默认提示级别。
Font.PreferNoHinting:如果可能的话,渲染文本而不提示符号的轮廓。文本布局将在排版上准确,使用与使用相同的指标,例如打印时。
Font.PreferVerticalHinting:如果可能的话,渲染文本时不使用水平提示,但将字形与像素网格在垂直方向上对齐。在密度太低而无法准确呈现符号的显示器上,文本将显得更清晰。但由于字形的水平度量是没有暗示的,文本的布局将可扩展到更高密度的设备(如打印机),而不会影响诸如换行之类的细节。
Font.PreferFullHinting:如果可能的话,在水平和垂直方向上呈现带有提示的文本。文本将被修改以优化目标设备上的易读性,但由于指标将取决于文本的目标大小,字形、断行和其他排版细节的位置将无法缩放,这意味着文本布局可能在具有不同像素密度的设备上看起来不同。
 

font.italic : bool

设置字体是否为斜体样式。

font.kerning : bool

启用或禁用OpenType字距调整功能时,对文本进行字形调整。禁用此功能可能会在创建或更改文本时提高性能,但可能会牺牲一些外观特征。默认值为true。

font.letterSpacing : real

字距调整,它改变了字体中各个字母之间的默认间距。一个正数值会增加相应的像素,使字母间距增大;一个负数值会减少间距。

font.pixelSize : int

以像素为单位设置字体大小。字体依赖于特定的设备。为了以独立于设备的方式设置字体大小,应该使用“pointSize”。

font.pointSize : real

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

font.strikeout : bool

字体是否带有删除线(即划线删除标记)

font.styleName : string

设置字体的样式名称。这个属性是大小写不敏感的。如果设置了font.styleName,那么在匹配字体时,会根据这个样式名称来匹配,而不是根据font.weightfont.boldfont.italic这些属性。

font.underline : bool

设置文本是否带有下划线。

font.weight : int

设置字体粗细(weight)。在Qt中,字体粗细是一个整数值,范围从1到1000,或者可以使用预定义的枚举值:

  • Font.Thin
  • Font.Light
  • Font.ExtraLight
  • Font.Normal - 默认值
  • Font.Medium
  • Font.DemiBold
  • Font.Bold
  • Font.ExtraBold
  • Font.Black

        不是所有的字体都支持所有粗细级别。具体而言,一些字体可能只支持一部分范围的值,因此在设置字体粗细时,可能需要考虑字体的可用选项。

font.wordSpacing : real

设置字体的字间距。字间距是单词之间的默认间距。正值会增加相应的像素数量,负值会相应地减少单词之间的间距。

inputMask : string

设置输入掩码(input mask),以限制允许的文本输入。输入掩码的功能类似于输入验证,确保用户只能输入符合特定格式的文本。

字符(必须输入)字符(可留空)含义
Aa只能输入A-Z,a-z
Nn只能输入A-Z,a-z,0-9
Xx可以输入任意字符
90只能输入0-9
Dd只能输入1-9
#只能输入加号(+),减号(-),0-9
Hh只能输入十六进制字符,A-F,a-f,0-9
Bb只能输入二进制字符,0或1
字符含义
>后面的字母字符自动转换为大写
<后面的字母字符自动转换为小写
停止字母字符的大小写转换
[ ] { }括号中的内容会直接显示出来
\将该表中的特殊字符正常显示用作分隔符

length : int

返回TextInput项目中的总字符数。如果TextInput有一个输入掩码,长度将包括掩码字符,并且可能与text属性返回的字符串长度不同。与查询text属性的长度相比,这个属性可能更快,因为它不需要复制或转换TextInput内部字符串数据。这个属性通常用于性能优化,特别是在处理大量文本数据时。通过使用textLength属性,可以避免不必要的字符串复制和转换操作,从而提高应用程序的效率。

maximumLength : int

TextInput中允许的最大文本长度。如果文本太长,它会在限制处被截断。默认情况下,此属性包含一个值为32767的值。这个属性可以用于限制用户在文本输入框中输入的最大字符数,防止过长的文本导致内存占用过高或其他问题。

mouseSelectionMode : enumeration

指定了如何使用鼠标选择文本。

TextInput.SelectCharacters - 选择以单个字符为单位进行更新。(默认)
TextInput.SelectWords - 选择以整个单词为单位进行更新。

这个属性仅在selectByMousetrue时适用。通过设置selectionMode属性,可以选择是按字符还是按单词进行选择,这取决于用户的鼠标操作方式。

overwriteMode : bool

用户输入的文本是否会覆盖现有的文本。如果此属性为true,则现有文本被逐个字符覆盖;否则,文本在光标位置插入并替换现有文本。默认情况下,此属性为false(新文本不会覆盖现有文本)。

passwordCharacter : string

定义了当echoMode设置为Password或PasswordEchoOnEdit时显示的字符。默认情况下,它是平台主题使用的密码字符。

passwordMaskDelay : int

设置在可见字符被密码字符屏蔽之前的延迟,单位是毫秒。

persistentSelection : bool

当TextInput失去焦点并转移到场景中的另一个项目时,是否应保持其选择。默认情况下,这个属性被设置为false

readOnly : bool

用户输入是否可以修改TextInput的内容。

renderType : enumeration

设置文本渲染类型。

有两种支持的渲染类型:

1、Text.QtRendering:文本在目标平台上看起来更原生,并且不需要诸如文本转换等高级功能,那么可以选择Text.NativeRendering。使用这种渲染类型与高级功能结合可能会导致结果质量较差,有时甚至出现像素化。

2、Text.NativeRendering: 这是默认的渲染类型,它是由QQuickWindow::textRenderType()确定的。

selectByMouse : bool

在特定平台上用户是否可以通过鼠标选择文本。

selectedText : string

文本输入中当前选择的文本。

selectedTextColor : color

选择文本时的显示高亮文本颜色。

selectionColor : color

文本高亮颜色,在选择后使用。

selectionEnd : int

光标在当前选择的最后一个字符之后的位置。

selectionStart : int

光标在当前选择的第一个字符之前的位置。

text : string

输入框的文本。

validator : Validator

在TextInput上设置验证器。当设置验证器时,TextInput将只接受使text属性处于可接受状态或中间状态的输入。只有当按enter键时文本处于可接受状态时,才会发送可接受的信号。
目前支持的验证器有IntValidator、DoubleValidator和RegularExpressionValidator。

wrapMode : enumeration

设置TextInput对象的文本换行方式。这个属性决定了当文本超过TextInput的宽度时该如何处理。TextInput.NoWrap(默认值):不进行换行。如果文本中没有足够的换行符,那么implicitWidth会超过设定的宽度。

TextInput.WordWrap:只在单词边界进行换行。如果某个单词太长,implicitWidth会超过设定的宽度。

TextInput.WrapAnywhere:在任何位置进行换行,即使这个位置在单词的中间。

TextInput.Wrap:如果可能,尽量在单词边界进行换行;如果不可能,则在适当的位置换行,即使这个位置在单词的中间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1318413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

typescript使用解构传参

看下面这个函数 interface Student {id: number;name: string;class: string;sex: string;}function matriculation(student: Student) {//...}我们要调用它,就需要传递一个实现了Student约束的对象进去 interface Student {id: number;name: string;class: string;sex: string…

【算法】算法题-20231211

这里写目录标题 一、387. 字符串中的第一个唯一字符二、1189. “气球” 的最大数量三、1221. 分割平衡字符串 一、387. 字符串中的第一个唯一字符 简单 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不存在&#xff0c;则返回…

uniapp实现地图电子围栏功能

该功能使用uniapp中内置组件map实现 效果图预览&#xff1a; 实现过程&#xff1a; 1.文档&#xff1a; 2.代码&#xff1a; <template><view><map :style"width: 100%; height:screenHeight" :latitude"latitude" :longitude"longit…

lightdb 23.4 支持pivot行转列

前言 lightdb-x从23.4版本支持pivot行转列功能&#xff1b;先了解oracle支持行转列功能&#xff1a; 语法如下&#xff1a; oracle描述如下&#xff1a; Oracle 11g introduced the new PIVOT clause that allows you to write cross-tabulation queries which transpose …

【数据结构】复习题(一)

一、选择题 1.组成数据的基本单位是()。 A. 数据项 B.数据类型 C.数据元素 D.数据变量 2.设数据结构A{D,R},其中D&#xff5b;1,2,3,4},R{r},r{<1,2>,<2,3>,< 3,4>,<4,1>}&#xff0c;则数据结构A是()。 A.线性结构 B.树型结构 C.图型结构 D.集合 3.…

DC电源模块的设计与制造技术创新

BOSHIDA DC电源模块的设计与制造技术创新 DC电源模块的设计与制造技术创新主要涉及以下几个方面&#xff1a; 1. 高效率设计&#xff1a;传统的DC电源模块存在能量转换损耗较大的问题&#xff0c;技术创新可通过采用高效率的电路拓扑结构、使用高性能的功率开关器件和优化控制…

【深度学习目标检测】四、基于深度学习的抽烟识别(python,yolov8)

YOLOv8是一种物体检测算法&#xff0c;是YOLO系列算法的最新版本。 YOLO&#xff08;You Only Look Once&#xff09;是一种实时物体检测算法&#xff0c;其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化&#xff0c;提高了检测速度和准确性。…

人生感悟 | 当前经济形势,给25~35岁的年轻人一点建议

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 这两年经济情况怎么样呢&#xff1f;相信大家都有自己的感觉。 且不说网上看到的“裁员裁到大动脉”“设计院欠薪”等各种新闻。 说自己和家人的亲身经历吧&#xff0c;这两年经历了被拖欠工资、公司缩编、换工作、公…

python分析数据出现Text input context does not respond to _valueForTIProperty错误

一开始运行脚本还是不报错的&#xff0c;脚本内容部分如下&#xff1a; 出现了如下的效果图&#xff1a; 后面隔了几天再次运行居然报错了&#xff0c;如下图所示&#xff0c;但是也没有更改代码啊。后来发现原来是输入法导致的&#xff0c;把输入法切换成英文状态就不报错啦。…

gitlab 通过svn hook 触发

jenkins 起一个item 配置&#xff1a; 我选的自由风格的 源码管理配置 先选subversion 就是svn类型 url 设置project 的路径&#xff0c; 注意是工程&#xff0c;不是svn 顶层 添加一个账户来进行pull 等操作 选择添加的账号 构建触发器&#xff1a; &#xff0c;重要的是要自…

海安行车记录仪avi杀病毒导致文件丢失的恢复案例

海安行车记录仪&#xff0c;听名字就知道是个小小小品牌&#xff0c;而且用的文件格式是比较古老的AVI&#xff0c;这种文件格式是微软设计的&#xff0c;后来并没有普及&#xff08;不支持4G以上大文件而且结构过于松散&#xff09;。这个恢复案例比较特殊的地方是不太清楚做过…

matlab面向对象编程入门笔记

文章目录 1. 类和结构2. 定义类3. 属性3.1 private/protected/public属性3.2 constant属性3.3 hidden属性 4. 方法4.1 private/protected/public方法4.2 static方法4.3 外部方法 5. 动态调用6. 继承-超类6.1 handle超类6.2 dynamicprops 和 hgsetget子类 7. 封闭(sealed)类、方…

gitee gihub上传步骤

上传 1. 到具体要上传的文件目录 2. 右击git Bash Here 初始化仓库&#xff1a;git init 3. 添加文件 添加所有文件 : git add . &#xff08;注意这里有个点&#xff09;添加具体文件&#xff1a; git add test.md 4. 添加到暂存区 git commit -m 暂存区 5. 将本地代…

reactive数据不响应

我们知道&#xff0c;reactive函数用于创建对象等复杂数据的响应式代理对象&#xff0c;当该对象的属性发生变化时&#xff0c;会自动触发视图更新。 但在Vue 3中&#xff0c;当我们使用reactive创建的对象或数组进行赋值时&#xff0c;尽管能够完成正常的赋值操作&#xff0c…

Lumerical 选项------superimpose structure

Lumerical 选项------superimpose structure 简介正文 简介 这里给大家介绍一下 Modal analysis 计算中的 superimpose structure 选项的作用。 正文 当我们勾选上 superimpose structure 选项时&#xff0c; 当我们取消勾选时 通过对比我们得到&#xff0c;勾选 superimp…

动态规划——OJ题(一)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、第N个泰波那契数1、题目讲解2、思路讲解3、代码实现 二、三步问题1、题目讲解2、思路讲解…

WebLangChain_ChatGLM:结合 WebLangChain 和 ChatGLM3 的中文 RAG 系统

WebLangChain_ChatGLM 介绍 本文将详细介绍基于网络检索信息的检索增强生成系统&#xff0c;即 WebLangChain。通过整合 LangChain&#xff0c;成功将大型语言模型与最受欢迎的外部知识库之一——互联网紧密结合。鉴于中文社区中大型语言模型的蓬勃发展&#xff0c;有许多可供利…

Mysql存储引擎-InnoDB

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

查询某个类是在哪个JAR的什么版本开始出现的方法

背景 我们在依赖第三方JAR时&#xff0c;同时也会间接的依赖第三方JAR引用的依赖&#xff0c;而当我们项目中某个依赖的版本与第三方JAR依赖的版本不一致时&#xff0c;可能会导致第三方JAR的在运行时无法找到某些方法或类&#xff0c;从而无法正常使用。 如我正在开发的一个…

beebox靶场A1 low 命令注入通关教程(上)

一&#xff1a;html注入 get HTML注入&#xff0c;就是当用户进行输入时&#xff0c;服务器没有对用户输入的数据进行过滤或转义&#xff0c;导致所有输入均被返回前端&#xff0c;网页解析器会将这些数据当作html代码进行解析,这就导致一些恶意代码会被正常执行。 首先进行简…