QLineEdit是单行文本编辑器,只允许用户输入纯文本

  • 纯文本:普通的字
  • 富文本:除普通的字外还有超链接以及一些样式

QLineEdit自己含有撤销,重做,剪切,粘贴,拖放功能

QLineEdit直接继承自QWeight

目录

1  基本功能

1.1  创建

1.2  文本的设置与获取

1.2.1  设置文本内容 setText()

1.2.2  在光标处插入文本 insert()

1.2.3  获取真实的内容文本 text()

1.2.4  获取用户能看到的内容文本 displayText()

2  输出模式

2.1  设置与获取输出模式

2.1.1  正常输出

2.1.2  不输出

2.1.3  密文输出

2.1.4  编辑时正常,编辑后密文

3  占位提示字符串

3.1  设置

3.2  获取

4  清空按钮显示

4.1  设置

4.2  获取

5  添加自定义行为

5.1  addAction(QAction,QLineEdit.ActionPosition)

5.1.1  放前面(放图标)

5.1.2  放后面(放图标)

5.1.3  不放图标

5.2  addAction(QIcon,QLineEditActionPositon)

5.2.1  放前面

5.2.2  放后面

5.2.3  不放图标(放前面)

5.2.4  不放图标(放后面)

6  自动补全

6.1  设置 setCompleter(QCompleter)

6.2  获取 completer()

7  输入限制

7.1  内容长度限制

7.1.1  设置 setMaxLength(int)

7.1.2  获取 maxLength()

7.2  只读限制

7.2.1  设置 setReadOnly(bool)

7.2.2  获取 isReadOnly()

7.3  规则验证

7.3.1  验证器验证 QValidator

7.3.2  掩码验证

7.3.3  判断是否通过验证 hasAcceptableInput()

8  文本修改状态

8.1  获取

8.2  设置 setModified(bool)

9  光标控制

9.1  向左移动int个字符 cursorBackward(bool,int)

9.2  向右移动int个字符 cursorForward(bool,int)

9.3  向左移动一个单词长度 cursorWordBackward(bool)

9.4  向右移动一个单词长度 cursorWordForward(bool)

9.5  移动到行首 home(bool)

9.6  移动到行尾 end(bool)

9.7  设置光标位置 setCursorPosition(int或float)

9.8  获取光标位置 cursorPosition()

9.9  获取 指定坐标位置 的 对应文本光标 的 位置 cursorPositionAt(const QPoint & pos)

10  文本边距设定

10.1  设置 setTextMargins(int,int,int,int)

10.2  获取 getTextMargins()

11  设置对齐方式 setAlignment(Qt.Alignment)

11.1  水平方向

11.1.1  Qt.AlignLeft 左对齐

1.1.2  Qt.AlignRight 右对齐

11.1.3  Qt.AlignHCenter 居中

11.1.4  Qt.AlignJustify 两端对齐

11.2  垂直

11.2.1  Qt.AlignTop 顶部对齐

11.2.2  Qt.AlignBottom 底部对齐

11.2.3  Qt.AlignVCenter 中心对齐

11.2.4  Qt.AlignBaseline 基线对齐

11.3  水平方向和竖直方向都居中 Qt.AlignCenter

11.4  水平与垂直混合搞

12  常用编辑功能

12.1  退格 backspace()

12.1.1  非选中

12.1.2  选中

12.2  删除 del_()

12.2.1  非选中

12.2.2  选中

12.3  清空 clear()

12.4  复制剪切与粘贴

12.4.1  复制 copy()

12.4.2  粘贴 paste()

12.4.3  剪切 cut()

12.5  撤销 undo

12.5.1  执行撤销 undo()

12.5.2  获取是否可撤销 isUndoAvailable()

12.6  重做 redo

12.6.1  执行重做 redo()

12.6.2  获取是否可以重做 isRedoAvailable()

12.7  设置是否可以拖放 setDragEnabled(True)

12.8  文本选中类

12.8.1  选中指定区间的文本 setSelection(start_pos,length)

12.8.2  选中所有文本 selectAll()

12.8.3  取消选中已选择文本 deselect()

12.8.4  是否有选中的文本 hasSelectedText()

12.8.5  获取选中的文本 selectedText()

12.8.6  获取选中的开始位置 selectionStart()

12.8.7  获取选中的结束位置 selectionEnd()

12.8.8  获取选中的长度 selectionLength()

13  信号

13.1  文本编辑时发射的信号 textEdited()

13.2  文本框发生改变时发出的信号 textChanged()

13.3  按下回车键时发出的信号 returnPressed()

13.4  结束编辑时发出的信号 editingFinished()

13.5  光标位置发生改变时发出的信号 cursorPositionChange()

13.6  选中的文本发生改变时发出的信号 selectionChanged()


1  基本功能

1.1  创建

单行文本编辑器的长度是无限长的

但是按Enter不能换行

在创建时也直接可以加上一个字符串,运行后该字符串自动在文本框内

1.2  文本的设置与获取

1.2.1  设置文本内容 setText()

1.2.2  在光标处插入文本 insert()

我们通过上面那个图可以看出默认光标在我们设置的文本后面,我们现在在光标处插入另一个文本

我们也可以在下面搞一个按钮,把这个函数放在槽函数里

运行后

我们点击一下按钮

1.2.3  获取真实的内容文本 text()

真实内容文本与用户看到的内容文本区别,比如说QQ的登陆页面,在我们输入密码时,我们看到的文本都是圆的点儿,但是我们实际输入进去的却不是圆的点儿,获取真实的内容文本则是我们真正输入的字符,用户看到的文本则是圆的点儿

1.2.4  获取用户能看到的内容文本 displayText()

此例中真实文本与用户能看到的内容文本相同,如果将下面提到的输出模式改为密文则显示文本不真实文本会有不同

2  输出模式

比如说当我们输入密码时候显示点儿,此时的输出模式就为密文输出

2.1  设置与获取输出模式

设置函数setEchoMode()可选参数有四种:

  • 0 - QLineEdit.Normal 正常输出
  • 1 - QLineEdit.NoEcho 不输出
  • 2 - QLineEdit.Password 密文形式
  • 3 - QLineEdit.PasswordEchoOnEdit 编辑时明文,结束后密文

获取函数echoMode()会根据上面的参数返回相应的四种数据

2.1.1  正常输出

2.1.1.1  设置

运行后我们输入123

2.1.1.2  获取

2.1.2  不输出

2.1.2.1  设置

运行后我们输入123

发现没有反应

此时我们想看一下在不输出状态下能不能获取其内容

我们搞一个按钮获取一下

运行后我们输入123,然后点击获取

发现是可以获取的

这种输出模式用的很少,在Linux的非图形化界面中,输入密码时,采用的是这种不输出形式

2.1.2.2  获取

运行结果

2.1.3  密文输出

2.1.3.1  设置

运行后输入123

2.1.3.2  获取

2.1.3.3  密文获取内容

我们搞一个按钮连一个槽函数看看一下真实内容与显示内容

运行后我们输入123

点击获取

2.1.4  编辑时正常,编辑后密文

这个为了让窗口不聚焦指定的文本框,咱们要再创建一个文本框

2.1.4.1  设置

运行后输入123

这个时候我们再点击第二个文本框

我们再点击一下第一个文本框,发现不能再回到明文状态

此时再次在第一个文本框中输入字符,上一次输入的字符会被删除

2.1.4.2  获取

3  占位提示字符串

3.1  设置

运行后我们发现文本框中有灰色的提示字符,这一串字符无法被选中

之后我们在文本框中输入字符,提示字符消失

3.2  获取

4  清空按钮显示

4.1  设置

运行之后输入字符

我们发现右侧有一个叉,我们点击之后可以清空文本框的内容

4.2  获取

5  添加自定义行为

QLineEdit.ActionPosition Action在文本框的位置

  • QLineEdit.LeadingPosition 放前面
  • QLineEdit.TrailingPosition 放后面

5.1  addAction(QAction,QLineEdit.ActionPosition)

我们首先先定义一个行为,并将行为连接一个槽函数

5.1.1  放前面(放图标)

5.1.2  放后面(放图标)

无论是放前面或是放后面,我们点击图标后

5.1.3  不放图标

我们也可以不放图标

5.1.3.1  放前面

我们发现光标前有一段白色的区域

5.1.3.2  放后面

我们输入一段字后会发现光标后有一段白色的区域

无论放前面还是放后面,我们点击白色区域

5.2  addAction(QIcon,QLineEditActionPositon)

返回值为QAction

既然返回值为QAction我们就不用再创建一个action

5.2.1  放前面

之后我们再把这个action连接到槽函数

5.2.2  放后面

之后我们连接槽函数

无论是放前面还是放后面我们点击一下图标的结果都是

5.2.3  不放图标(放前面)

5.2.4  不放图标(放后面)

我们同样发现无论放前面或放后面都会有白色区域,我们点击一下白色区域后

这个一般应用于输入密码的文本框内,切换明文与密文的状态,我们现在来搞一下

我觉得手动创建action的方法易读性更强,所以例中我使用5.1的方法

我们首先设置输出模式为密文模式,之后添加action置文本框后,图片我们用一个睁开的眼,为了更好的看效果,我同时把文本框搞大一点

运行后输入123

我们现在修改一下槽函数

运行后输入123,我们点击一下右侧的按钮

发现能成功,但是我们再点一下回不到原来的状态,所以我们再对槽函数进行更改

现在就行了

起始状态

点一下按钮

再点一下按钮

我们以上涉及到的前后用0,1可以表示

放在前部

放在后部

6  自动补全

首先我们应该先创建一个完成器

创建的方法是QCompleter()

  • 第一个参数是完成器要提示的内容,类型是一个列表,列表中只能含有字符串
  • 第二个参数为完成器的父对象

6.1  设置 setCompleter(QCompleter)

运行之后的效果

  • 注:我们输入的大小写也应与完成器的内容一致

6.2  获取 completer()

7  输入限制

7.1  内容长度限制

7.1.1  设置 setMaxLength(int)

我们现在搞一个文本框,限制其为5个字符

我输入6的时候发现输入不进去了

我们使用setText()并不能改变字符数的限制

7.1.2  获取 maxLength()

7.2  只读限制

7.2.1  设置 setReadOnly(bool)

运行后我们发现这个文本框没有光标了,也无法聚焦,我们不能向内输入文字了

只读只是针对用户的,我们仍然可以使用setText()向文本框中传入文本

可以显示,但不能更改

7.2.2  获取 isReadOnly()

7.3  规则验证

7.3.1  验证器验证 QValidator

7.3.1.1  介绍验证器

验证器拿到数据的瞬间会执行validate()函数,其中有三个参数分别为父对象,输入文本和光标位置

之后这个方法会返回三种元组

分别为

  • return(QValidator.Acceptable,input_text,pos) 验证通过
  • return(QValidator.Intermediate,input_text,pos) 暂不判定是否通过验证
  • return(QValidator.Invalid,input_text,pos) 验证不通过

暂不判定是正在输入的时候,比如我们输入验证码,我们刚刚输入了一个字符,此时的状态是暂不判定

当我们验证没有通过时,我们可以使用fixup重新输入返回值进行下一次验证

QValidator是一个抽象类,我们可以将其继承然后实例化后使用,也可以用系统提供的子类

7.3.1.2  创建验证器

现在我们创建一个继承QValidator的验证器类,之后重写其中的validate

我们运行之后输入123

之后关闭窗口

7.3.1.3  验证器返回值的修改

修改 输入内容与光标位置

如果我们将validate方法中的返回值修改为定值

运行之后我们输入1

再输入2

再输入3

关闭窗口

只修改光标位置

之后我们输入123

7.3.1.4  判定

现在我们加入判定条件,如果值在18-180之间,我们判定为验证通过,其余验证为无效

运行后我们在文本框中输入123

文本框中并没有出现字符

并且由于最后没有input_text之后又要将input_text转换为int,所以正常关掉窗口时程序会崩溃

这个时候我们就需要中间状态了,因为如果要输入18.我们应该先输入1,后输入8

我们判定当字符长度为1时暂不判定

运行之后我们输入1801

我们可以看到,由于输入第四位时会超出判定范围,所以就不会被显示

使用字符长度就会出现一个问题,如果我第一个字符输入一个英文

会导致程序崩溃

所以我们应该将判定条件改为文字1-9

但是发现还会崩溃,这个问题连同下面的问题一起解决

这个时候我们又遇到一个问题,我们现在想输入123

当我输入到2时,它不让我输入了

那我们再对暂不判定的条件进行修改,我们将其改为1-17

我们现在又遇到一个问题,我现在输入123后,我现在觉得我输入错了,我把之前输入的字符全部删掉

由于我们完成操作后,没有input_text,我们又将一个空字符转换为int,这时程序崩溃

由于是因为转换类型导致的问题,所以我们这么搞

现在我们解决了上面的一个问题,当我想输入非数字字符时,输不进去了

我们现在全部框选删除也不会崩溃了,因为全部选中后按退格键,它删不掉了

这个时候我们如果一个一个退格去按,最开始的字符是删不掉的

因为如果执行完删除操作,try是走不通的,所以走到了except,走到except是不会让你执行操作的

但这个时候我们也算是解决了问题,用户可以通过改变光标位置输入想输入的字符,我们这个时候先简化一下语句

validate的判定语句可以简化成这样

但是一般的文本框都支持全删的,我们这个时候需要添加一个条件

  • 注:此处返回的元组的input_text必须为一个字符串

这里有一个问题,输入1234会直接崩溃掉,原因是我们没在try内加else,我们现在加一下

现在我们又遇到了另一个问题,我现在搞两个文本框,运行后我在验证器文本框中输入12,然后切换到另一个文本框中

发现这个12还在,我不想让这个12还在,这个时候我们需要用到方法fixup

我们可以这么搞

运行后我输入12,之后点击另外一个文本框

它自动会变为18

  • 注意,此处的fixup进入条件为结束编辑时处于暂不判断状态,如果我们做出修改后依然进入暂不判断状态,fixup不会运行第二次

这个时候当我们全删了之后会崩溃,是由于int转换的原因,这个时候我们这么搞

7.3.1.5  使用系统提供的验证器

QIntValidator(bottom,top,parent) 限制整形数据范围

我们现在将验证器范围控制在18-180之间

它这个没有对最小值进行限定,我们输入16后点击第二个文本框

文本并没有被修改

如果有这个需求可以把这个类继承后重写fixup方法

运行后我们输入16,之后点击第二个文本框

发现它变到18了

我们也可以这么写

这个时候要注意一个事儿,这两个条件虽然是or但是不能交换位置,因为int(p_str)<18这个条件正是崩溃的原因

QDoubleValidator(float,float,int,parent) 浮点数限制数据范围

第一个float是下限,第二个float是上线,int为小数位数,parent为父对象)

经测试,可以正常使用

QRegExpValidator(QRegExp, parent: QObject = None) 通过正则表达式限定

我不懂什么是正则表达式,所以只能举一个例子,上面的参数第一个位置是正则表达式,第二个位置是父对象

像我们现在搞的这个,我们现在只能像文本框中输入hello,输入别的输不进去

我们现在输入he2

发现2没有被输入进去

7.3.2  掩码验证

7.3.2.1  介绍掩码

总的来说一堆数种有隔断,就叫掩码

掩码字符的含义如下

我们就简单搞一个11位,中间分割符为 -

运行结果

输入全部字符

字符含义下部的 大于号和小于号 是这么用的

我输入的是小写的a,它自动会帮你转变为大写的A

7.3.2.2  可选的;+占位字符 可以在未输入时将字符填满整个文本框

我们现在想在没有输入的时候,让文本框中都是井号

什么号都可以

只要是字符就可以

7.3.3  判断是否通过验证 hasAcceptableInput()

我们现在搞一个按钮,之后把这个方法连接到其相应的槽函数中

我们现在是验证我们的掩码

运行之后,我们的初始状态如下

之后我们点击一下验证

发现此时并没有通过验证,这个时候我们按照格式输入文本框中内容

此时我们再点击一次验证

8  文本修改状态

8.1  获取

首先我们搞一个文本框再搞一个按钮,按钮槽函数连接方法isModified()

运行结果

当前文本框是没有输入的,我们点一下下面的按钮

之后我们输入1再点击一下按钮

我们现在再把1删掉

运行结果

发现还是True,说明一旦编辑过,这个状态是一直有记录的

8.2  设置 setModified(bool)

这个状态是可以手动设置的

此时我们点击一下按钮

我们可以把这个方法放在槽函数中,来获取按下每一次按下按钮的间隔之间有没有进行修改

运行后,我们输入一个1,之后点击按钮

然后我们再点击一下按钮

现在我们再输入一个2

9  光标控制

我们首先搞一个文本框与一个按钮

9.1  向左移动int个字符 cursorBackward(bool,int)

  • 在pyqt的文本框中,向左就是向后

如果bool为True带选中效果,bool为False不带选中效果,int为移动的字符

我们现在把按钮连接cursorBackward()

运行之后,我们输入123

点击一下按钮

现在虽然是选中状态但是输入不了字符,因为没有聚焦,我们现在移动之后给他聚焦

现在就能改了

改成False就是不选中,只移动光标

在这里我发现一个以前没发现的事儿,大部分的文本框,我们按backspace是往左删一个字符,我们按del是往右删一个字符

9.2  向右移动int个字符 cursorForward(bool,int)

  • 在pyqt的文本框中,向右就是向前

如果bool为True带选中效果,bool为False不带选中效果,int为移动的字符

9.3  向左移动一个单词长度 cursorWordBackward(bool)

  • 在pyqt的文本框中,向左就是向后

如果bool为True带选中效果,bool为False不带选中效果

它这个单词长度是这样判定的,从光标直到间隔

我们先设置一个看一下

运行之后我们输入abcd efg

我们点击一下按钮

再点击一下

我们把中间的空格换成逗号

点击一下

再点击一下

再点击一下

9.4  向右移动一个单词长度 cursorWordForward(bool)

  • 在pyqt的文本框中,向右就是向前

如果bool为True带选中效果,bool为False不带选中效果

9.5  移动到行首 home(bool)

我们输入123,之后点击按钮

9.6  移动到行尾 end(bool)

输入123后,我们点击鼠标,将光标置于最左侧

9.7  设置光标位置 setCursorPosition(int或float)

我们设置为光标转到第0位

我们现在输入123

之后点击一下按钮

我们可以通过这个方法返回大致的文本中间位置

我们输入1234567890之后点击按钮

发现光标在5和6之间

这个方法可以放入浮点数,如果为浮点数,它之后取整数部分

我们现在输入123,之后点击按钮

9.8  获取光标位置 cursorPosition()

我们在槽函数中加入 cursorPosition()

之后我们输入123

之后我们点击一下按钮

9.9  获取 指定坐标位置 的 对应文本光标 的 位置 cursorPositionAt(const QPoint & pos)

这个函数是(15,5)指的是相对与文本框的坐标

我们运行后直接点击一下按钮

由于现在文本框的(15,5)位置上没有字符,所以它返回当前的光标位置

之后我们输入123再点击按钮

现在显示的是1,无论我再往后输入多少位,它都会返回1,因为文本框的位置(15,5)这个地方已经有字符存在了

它如果给这个文本框输入超了,它永远是按照文本框的左上角点,往右算

也就是说,我们状态A和状态B的结果是不一样的

状态A

状态B

10  文本边距设定

我们先搞一个文本框

10.1  设置 setTextMargins(int,int,int,int)

这个函数的四个int,依次是 左边距,上边距,右边距,下边距

10.2  获取 getTextMargins()

11  设置对齐方式 setAlignment(Qt.Alignment)

首先我们搞一个文本框

11.1  水平方向

  • Qt.AlignLeft 左对齐
  • Qt.AlignRight 右对齐
  • Qt.AlignHCenter 居中
  • Qt.AlignJustify 两端对齐

11.1.1  Qt.AlignLeft 左对齐

1.1.2  Qt.AlignRight 右对齐

11.1.3  Qt.AlignHCenter 居中

11.1.4  Qt.AlignJustify 两端对齐

效果上来看和左对齐相同

11.2  垂直

垂直方向我们就得先resize文本框

在默认状态下是这样的

11.2.1  Qt.AlignTop 顶部对齐

11.2.2  Qt.AlignBottom 底部对齐

11.2.3  Qt.AlignVCenter 中心对齐

11.2.4  Qt.AlignBaseline 基线对齐

看起来和居中差不多

11.3  水平方向和竖直方向都居中 Qt.AlignCenter

11.4  水平与垂直混合搞

比如我现在想搞靠右,靠下,我们应该这样写

12  常用编辑功能

我们首先创建一个文本框,然后创建一个按钮去连这些方法

现在我们看一下Pyqt中文本框内置的所有编辑功能

12.1  退格 backspace()

12.1.1  非选中

我们输入123后按一下按钮

12.1.2  选中

选中要用代码选中,用鼠标手动选中不行

不行的原因是当我们鼠标选中后,我们点击按钮,点击按钮的同时文本框也失去了焦点,所以选中失效

但是我们选中后可以按键盘的backspace,这个是正常的

我们在光标控制中,可以控制选中,我们现在搞一下

我们输入123,之后点击按钮

发现被删除了

12.2  删除 del_()

12.2.1  非选中

输入123后,光标向左移动一位后点击按钮

12.2.2  选中

输入123后点击按钮,发现被删除了

12.3  清空 clear()

输入123之后点击一下按钮

12.4  复制剪切与粘贴

我们现在搞三个按钮连接三个槽函数

复制,剪切的槽函数是全选的

12.4.1  复制 copy()

我们输入123,点击复制

12.4.2  粘贴 paste()

然后我们点击粘贴

由于我们复制之后文本框为全选状态,所以点击一下粘贴按钮后内容不会发生改变,但是取消的选中状态

再次点击粘贴

12.4.3  剪切 cut()

此时我们点击一下剪切按钮

发现文本框中的内容消失,然后我们再点击一下粘贴按钮

发现内容又回来了

12.5  撤销 undo

运行之后我们右击文本框,发现其中已经内置了一些功能

我们现在键入123

发现undo为可选状态

我们点击一下,发现输入的文本被撤销

12.5.1  执行撤销 undo()

我们也可以用代码模拟这个过程,在槽函数中加入

我们输入123

然后点击一下按钮

发现文本被撤销

12.5.2  获取是否可撤销 isUndoAvailable()

能否撤销取决于用户是否有可撤销的步骤,如果有则可撤销,如果没有则不可撤销

我们在槽函数中加入isUndoAvailable()

运行之后我们什么也不输入,点击一下按钮

之后我们输入123之后点击一下按钮

12.6  重做 redo

重做的意思是恢复撤销

12.6.1  执行重做 redo()

我们在槽函数中加入

之后我们输入123,之后右键选择撤销,然后点击按钮

发现被撤销的内容已经回来了

12.6.2  获取是否可以重做 isRedoAvailable()

当我们有可重做的内容为True,没有为False

我们在槽函数中加入

运行后我们直接点击一下按钮

输入123后撤销,我们再点击一下按钮

12.7  设置是否可以拖放 setDragEnabled(True)

我们的setDragEnabled()默认为False,所以我们在默认情况下是不可以对文本进行拖拽的

我们给这个属性设置为True

我们输入123,然后把2拖拽到最后一位

发现可以成功拖拽

这个方法也是可以支持把一个文本框中的内容拖拽到另一个文本框中

此时我们蓝色的文本框设置为可拖拽,白色文本框并没有设置可拖拽

正因如此,我们不能把白色文本框中的内容拖到蓝色文本框

但是我们可以把蓝色文本框中的内容拖到白色文本框

12.8  文本选中类

12.8.1  选中指定区间的文本 setSelection(start_pos,length)

参数:

  • start_pos 开始位置
  • length 长度

我们在槽函数中加入

之后输入123456,然后点击一下按钮

发现位置从0-5的字符已被选中

12.8.2  选中所有文本 selectAll()

我们在槽函数中加入

输入123,然后点击一下按钮

发现文本已被选中

12.8.3  取消选中已选择文本 deselect()

我们使用鼠标进行选择后,点击按钮后由于会失去焦点所以也会取消选中,所以我们只能把方法deselect()放在选中的后面测试

运行后输入123,然后点击按钮

发现文本框中的内容并不会被全部选中,测试成功

12.8.4  是否有选中的文本 hasSelectedText()

此函数会返回一个bool值

我们首先在槽函数中只使用hasSelectedText()

运行后输入123,然后直接点击按钮

之后我们在方法hasSelectedText()上加入全选

我们输入123后,点击一下按钮

12.8.5  获取选中的文本 selectedText()

此函数会返回一个str

我们的槽函数保留全选功能,之后添加selectedText()

之后我们输入123,然后点击按钮

12.8.6  获取选中的开始位置 selectionStart()

此函数会返回一个int

我们在槽函数中保留全选状态,之后加入方法selectionStart()

我们输入123后,点击按钮

选中部分起始位置为第0位

下面这两个函数在之前的pyqt版本中可能会有,但是在咱们使用的版本中,下面这两个方法已经没有了,我暂时还没想到有更合理的方法去替代它

12.8.7  获取选中的结束位置 selectionEnd()

12.8.8  获取选中的长度 selectionLength()

13  信号

由于下方有关于编辑状态的信号,我们先创建两个文本框

13.1  文本编辑时发射的信号 textEdited()

这个函数会传递出一个变量,变量内容为文本框中的内容

首先我们将文本框一使用textEdited()信号连接槽函数

我们输入123

13.2  文本框发生改变时发出的信号 textChanged()

这个函数会传递出一个变量,变量内容为文本框中的内容

这个方法与上一个方法的区别为我不通过编辑,也可以改变文本框的内容,比如我们用一个按钮连接一个槽函数,然后对文本框进行setText()

槽函数不变

我们先输入123

可以看到它的效果与上面的编辑信号相同

现在我们点击一下按钮

可以看到setText()会触发信号textChanged

现在我们把信号换位textEdited()

运行后我们点击一下按钮

可以看出setText()不能触发textEdited()

13.3  按下回车键时发出的信号 returnPressed()

这个函数不能传递出变量,所以我们需要改变槽函数

之后连接槽函数

运行之后我们直接按回车

槽函数触发

按下回车键的信号也在登陆界面中被使用,当我们输入完第一行账号时,我们可以连接这个信号,槽函数的功能为聚焦密码文本框,输入完密码文本框后,连接这个信号,槽函数功能为点击登陆按钮

13.4  结束编辑时发出的信号 editingFinished()

我们不更改槽函数,只更改信号

运行后我们把光标切到第二个文本框中

信号触发

这个信号可以无限触发,我们每次结束编辑后都会触发一次

当我们按下回车,按下tab键也同样会触发这个信号

13.5  光标位置发生改变时发出的信号 cursorPositionChange()

此方法可以传出两个变量,第一个变量为光标老的位置,第二个变量为光标新的位置,这两个变量类型均为int

我们先更改槽函数

我们将信号连接给槽函数

我们输入12

我们可以使用这个信号结合功能setSelection()做一个点首和尾就能选中的功能

13.6  选中的文本发生改变时发出的信号 selectionChanged()

这个信号由于不按按钮,所以一直会聚焦,所以使用鼠标选中也可以触发槽函数

运行后我们输入123

此时没有触发槽函数

现在我们选中3

从鼠标按住一直到鼠标抬起,这个过程中,此信号一直在触发

34.QLineEdit相关推荐

  1. Python Qt GUI设计:QLineEdit和QTextEdit文本框类(基础篇—13)

    目录 1.QLineEdit文本框类 2.QTextEdit文本框类 QLineEdit和QTextEdit都是文本框类,QLineEdit类是单行文本框控件,可以输入单行字符串.QTextEdit类 ...

  2. 【神经网络】(10) Resnet18、34 残差网络复现,附python完整代码

    各位同学好,今天和大家分享一下 TensorFlow 深度学习中如何搭载 Resnet18 和 Resnet34 残差神经网络,残差网络利用 shotcut 的方法成功解决了网络退化的问题,在训练集和 ...

  3. 34种墨西哥植物模型 Globe Plants – Bundle 34 Mexican Plants

    Globe Plants' Bundle 34墨西哥植物(3D模型)包括15种3D树木.灌木和肉质植物,用于南美洲的风景.住宅.花园和一般景观美化目的,特别是墨西哥,具有85种独特的照片逼真质量的3D ...

  4. resin-pro-4.0.34 服務器在windows环境下的配置

    resin-pro-4.0.34 服務器在windows环境下的配置 (轉載请注明作者:icelong) 到caucho網站上http://www.caucho.com/download/ 下載 re ...

  5. 【QT】Qt正则表达式的使用:使用QRegExp来限制QLineEdit的输入格式

    QLineEdit中使用QRegExp来限制输入格式,下面以IP输入框为例 QLineEdit *lineEditIP = new QLineEdit("192.168.147.200&qu ...

  6. python潜力开源项目_比较了1000多个Python开源项目,精选出这34个

    传智播客博学谷 微信号:boxuegu- get最新最全的IT技能 免费领取各种视频资料 在过去的一年里,Mybridge比较了近1000个的Python开源库,并从中评选出34个最有用的工具来帮助你 ...

  7. LeetCode - 34. Search for a Range

    34. Search for a Range Problem's Link -------------------------------------------------------------- ...

  8. 【组队学习】【34期】组队学习内容详情

    第34期 Datawhale 组队学习活动马上就要开始啦! 02月09日(星期三),宣发,2月组队学习计划!. 02月12日(星期六),进入学习群.开营仪式. 本次组队学习的内容为: 阿里云天池在线编 ...

  9. 反季大清仓,最低仅需34.9元

    不知不觉已经12月份了 还有一个月就要过年啦 很多地方已经进入了寒冬的季节 有的地方已经开启了下雪模式 纷纷开始买冬天的商品 棉衣.羽绒服.取暖器...... 但是....... 今天我是来搞反季清仓 ...

最新文章

  1. Maven中jar版本冲突问题的解决
  2. SQL实战篇:SQL基础及执行顺序
  3. 数据的表示方法和运算方法
  4. Docker学习总结(44)——Docker容器时间与主机时间不一致的三种解决方式
  5. 如何在SQL Server中导入具有不同列数的平面文件
  6. 前端优化-Img与background
  7. 2个YUV视频 拼接技术
  8. 学习李践《绩效飞轮--企业提升利润的系统工具》课程观后感
  9. jflash烧录教程_Jflash烧录(windows)原理分析
  10. 快速理解 POJO,VO,DO,DTO,Entity
  11. Android 开发佳站3
  12. Android app 后台被杀恢复
  13. wps分享为什么要登入_靠谱租分享:为什么要在年前租办公室
  14. MySQL入门很简单——读书笔记
  15. c语言里amp;amp;,c语言中amp;amp;是什么意思?
  16. java的jre和jdk
  17. 重装系统后开机黑屏显示cannot load file怎么办
  18. C6678里的汇编语言,TMS320C6678
  19. call()与appy()
  20. 数据大牛都在啃的15本书

热门文章

  1. Python-辨析type/dtype/astype用法
  2. WPS for Linux 界面改为中文
  3. esp8266局域网连接控制电机运动
  4. 理论问题与工程问题的差异在哪里?
  5. 苹果自研M1笔记本芯片投入65亿开发自研基带。
  6. 阿里是如何进行单元测试培训的?
  7. 超方便的 IndexDB 库
  8. gitbook安装与使用(含常用插件和book.json配置详解)
  9. 让所有GUI都自动化-PyAutoGUI(GUI自动化工具)
  10. 微信小程序--6位密码输入自动提交