注:这是本人在网络上听课后的总结笔记,仅供参考. --QLineEdit,QTextEdit,QPlainTextEdit,QKeySequenceEdit-- 纯键盘文本输入 一,QLineEdit 介绍:单行文本编辑器,可以输入或编辑单行纯文本 继承:QWidget 功能: 控件的创建: QLineEdit()#括号中可以填父控件名或字符串+父控件,字符串直接会在编辑器中显示 文本的设置和获取: setText(str)#设置内容文本 insert()#在光标出插入文本 text()#获取真实内容文本 displayText()#获取用户能看到的内容文本 输出模式: setEchoMode(QlineEdit.EchoMode)#NoEcho=1不输出,Normal=0正常输出,Password=2密文输出,PasswordEchoOnEdit=3编辑时明文,结束后密文 EchoMode()#获取输出模式状态 占位提示字符串: setPlaceholderText()#设置提示文本 placeholderText()#获取提示文本 清空按钮显示: setClearButtonEnabled()#True为显示清空按钮或False不显示清空按钮 issetClearButtonEnabled#获取 添加操作行为: addAction(QAction,QLineEdit.ActionPosition)#ActionPosition的值有LeadingPosition前面,TrailingPosition后面 addAction(QIcon,QLineEdit.ActionPosition) 自动补全: setCompleter(QCompleter)#QCompleter是一个列表 completer() 输入限制: setMaxLength(int)#内容长度限制,设置输入的长度 setReadOnly()#只读限制,True或False setValidator(Qvalidator)#规则验证,设置验证器.Qvalidator是验证器类别,用于验证用户输入数据的合法性, Qvalidator类,是一个抽象类,需要子类化,例: class x(Qvalidator): def validate(self,input_str,pos_int)#input_str输入的字符串,pos_int光标位置 return (Qvalidator.Acceptable,input_str,pos_int)#Qvalidator.Acceptable是通过验证,Qvalidator.Intermediate是暂时不做判定,Qvalidator.Inbalid是验证不通过 def fixup(self,input_str)#当文本编辑器处于非正常验证通过时调用此方法,并修复数据 return input_str#返回的值就是修复的数据,可以自己定义 le = QlineEdit() y = x() le.setValidator(y) Qvalidator提供的子类: QintValidator()#限制整形数据范围,括号中填写2个整数,一个下线一个上线,但是这个类不会自动修复数据,可以自定义一个修复方法就可以,也就是fixup() QDoubleValidator()#浮点型数据限制范围 QRegExpValidatoe()#通过正则表达式限定 setInputMask(mask_str)#规则验证,掩码验证,掩码是指定固定位置的固定数据类型达到一个格式上的限制,例如固定电话号码:四位区号-七位电话,IP地址XXX.XXX.XXX.XXX,掩码由一串掩码字符和分隔符组成 hasAcceptableInput()#判定输入文本是否通过验证 是否被编辑: isModifide()#True代表已被编辑,False表示没被编辑过 setModified()#设置文本框是否编辑状态 光标控制: cursorBackward()#向左移动几个字符 cursorForward()#向右移动几个字符 cursorWordBackward()#向左移动一个单词长度 cursorWordForward()#向右移动一个单词长度 home()#移动到首行, end()#移动到行尾 **以上几个方法的括号中都可填写True(带选中)或False(不带选中) setCursorPosition()#设置光标位置 cursorPosition()#获取光标位置 cursorPositionAt()#获取指定坐标位置对应文本光标的位置 文本边距设置: getTextMarging() setTextMarging()#括号中填写位置,左,上,右,下 对齐方式: setAlignment(Qt.Alignment)#水平位置:Qt.AlignLeft靠左,Qt.AlignRight靠右,Qt.AlignHCenter居中,Qt.AlignJustify自适应,同左对齐.垂直位置:Qt.AlignTop靠上,Qt.AlignBottom靠下,Qt.AlignVCenter居中,Qt.AlignBaseline靠基线,另外,Qt.AlignCenter等同于Qt.AlignHCenter|Qt.AlignVCenter垂直和水平都居中.设置中可以同时设置多个值,用|来链接,比如靠左靠下对齐就是Qt.AlignLeft|Qt.AlignBottom 常用编辑功能: backspace()#退格 del_()#删除 clear()#清空 copy()#复制 cut()#剪切 paste()粘贴 isUndoAvailable() undo()#撤销 isRedoAvailable() redo()#重做 setDragEnabled()#是否可以拖放 文本选中: setSelection()#选中指定区间的文本 selectAll()#选中所有文本 deselect()#取消选中已选文本 hasSelectedText()#是否有选中文本 selectedText()#获取选中的文本,str类型 selectedStart()#选中的开始位置,int类型 selectedEnd()#选中的结束位置,int类型 selectedLength()#选中的长度,int类型 信号: textEdited()#文本编辑时 textChanged()#文本框文本发生改变时textEdited用于用户操作时,使用命令修改是不会触发的,而textChanged只要内容被修改就会发射信号 ****以上2中信号基本相同,不同的地方只是在于 returnPressed()#按下回车键时 editingFinished()#结束编辑时 cursorPositionChanged()光标位置发生改变时 selectionChanged()#选中的文本发生改变时 二,QTextEdit 介绍:多行文本编辑器,并且支持富文本,也就是支持字体格式设置 继承:QAbstractScrollArea-->QFrame-->QWidget QFrame: 介绍:是一个基类可以选择直接使用,主要用来控制一些边框样式,例如凸起,凹下,阴影,线宽 继承:QWidget 功能: 框架形状: setFrameShape(QFrame.Shape)#QFrame.shape包括:QFrame.NoFrame什么都没有,QFrame.box围绕内容绘制一个框也就是一个盒子,QFrame.Panel绘制一个面板也就是一个平面,是内容显得凸起或凹陷,QFrame.HLine绘制一条没有框架的水平线,用作分隔符,QFrame.HLine绘制一条没有边框的垂直线,QFrame.StyledPanel绘制一个面板,使其外观取决于当前的GUI样式,QFrame.WinPanel基本不用,建议使用StyledPanel 框架阴影: setFrameShadow(QFrame.Shadow)#QFrame.Shadow包括:QFrame.Plain框架和内容与周围环境呈现水平,也就是没有任何3D效果,QFrame.Raised凸起效果,QFrame.Sunken凹陷效果 框架线宽: setLineWidth()#设置外线宽度,lineWidth()是获取外线宽度 setMidLineWidth()#设置中线宽度,midLineWidth()是获取中线宽度 frameWidth()#获取总宽度 QAbstractScrollArea: 介绍:是一个滚动区域的抽象类 继承:QFrame 功能: 设置水平和垂直滚动条:#暂时不用,以后有更好的代替QScrollBar 滚动条策略: setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy)#水平显示策略 setVerticalScrollBarPolicy(Qt.ScrollBarPolicy)#垂直显示策略 horizontalScrollBarPolicy() verticalScrollBarPolicy() *** Qt.ScrollBarPolicy包括: Qt.ScrollBarAsNeeded#当内容太多时自动显示滚动条,也是默认值 Qt.ScrollBarAlwaysoff#从不显示 Qt.ScrollBarAlwayson#始终显示 角落控件: setCornerWidget()#括号中可以放一个控件,比如一个按钮 功能: 占位提示文本: setPlaceholderText(str)#在文本框内容为空时提示内容 内容设置: setPlainText(str)#设置普通文本 insertPlainText(str)#插入普通文本 toPlainText#获取普通文本内容 setHtml()#html文本,也就是富文本 insertHtml(str)#插入html文本 toHtml#获取html文本 setText(str)#设置文本,自动判定为普通文本或html文本 append(str)#追加文本,在所有内容最后追加,格式也是自动判定 clear()#清空 **文本光标:首先获取文本光标对象: y = QTextEdit() x = y.textCursor() 添加内容: x.insertText()#插入文本,可以带一个格式参数, x.inserHtml()#插入html文本 x.insertmage(QTextImageFormat)#插入图片,QTextImageFormat包含:tf.setName()名字路径,tf.setWidth()宽,tf.setHeight()高 x.insertFrament(QTextDocumentFragment)#插入文本片段,QTextDocumentFragment包括:fromHrml(),fromPlainText() *插入列表 x.insertList(QTextListFormat)#在当前位置插入一个新块,并使其成为具有给定格式的新创建列表的第一个列表项,返回创建的列表 x.insertList(QTextListFormat.style)#在当前位置插入一个新块,并使其成为具有给定格式的新创建列表的第一个列表项,返回创建的列表 x.creatList(QTextListFormat)#创建并返回具有给定格式的新列表,并使当前段落的光标位于第一个列表项中 x.creatList(QTextListFormat.style)#创建并返回具有给定格式的新列表,并使当前段落的光标位于第一个列表项中 *** QTextListFormat包括: setIndent(int) setNumberPrefix(str) setNumberSuffix(str) setStyle(QTextListFormat_Style) QTextListFormat.style包括: QTextListFormat.ListDisc#一个圆圈 QTextListFormat.ListCircle#一个空的圆圈 QTextListFormat.ListSquare#一个方块 QTextListFormat.ListDecimal#十进制按升序排列 QTextListFormat.ListLowerAlpha#小写拉丁字符按字母排列 QTextListFormat.ListUpperAlpha#大写拉丁字符按字母排列 QTextListFormat.ListLowerRoman#小写罗马数字 QTextListFormat.ListUpperRoman#大写罗马数字 x.insertTable()#插入表格,括号中有两个参数,一个是行数,一个是列数,另外还可以额外多一个参数,QTextTableFormat()表格样式,QTextTableFormat里包含:setAlignment()对齐方式,setCellPadding()内边距,setCellSpacing()外边距,setColumnWidthConstraints()列宽 x.insertBlock()#插入一个空的文本块,也就是一个段落可以带一个QTextBlockFormat文本块格式,还可以带一个QTextCharFormat文本字符格式 x.insertFrame()#插入框架,可以带一个QTextFrameFormat 设置和合并格式: x.setBlockCharFormat(QTextCharFormat)#设置要格式化的当前块的块char格式 x.setBlockFormat(QTextBlockFormat)#设置当前块格式 x.setCharFormat(QTextCharFormat)#将光标的当前字符格式设置为指定格式 **以上3种会清空原有格式后在进行设置 x.mergeBlockCharFormat(QTextCharFormat) x.mergeBlockFormat(QTextBlockFormat) x.mergeCharFormat(QTextCharFormat) **后3种为合并格式,在原有格式上进行合并 获取内容相关: x.block()#获取光标所在的文本块,其中.text()可以获取当前段落的内容 x.blockFormat()#获取光标所在的文本块格式 x.blockCharFormat()#获取光标所在的文本块字符格式 x.blockNumber()#获取光标所在的文本块编号 x.charFrame()#获取文本字符格式 x.currentFrame()#获取当前所在的框架 x.currentList()#获取当前所在的文本列表 x.currentTable()#获取当前的表格 文本选中和清空: x.setPosition()#设置光标位置,需要反向设置回去线y.setTextCursor(x),2个参数,一个是光标位置,一个是移动模式QTextCursor.MoveMode x.movePosition()#移动指定长度后,有3个参数,一个是移动的选项操作QTextCursor.MoveOperation,第二个是移动模式QTextCursor.MoveMode,第三个是int没有太大意义,也需要反向设置y.setTextCursor(x) x.select()#需要反向设置y.setTextCursor(x),需要一个参数QTextCursor.SelectionType ** QTextCursor.MoveMode#包括:QTextCursor.MoveAnchor锚点与光标位置相同;QTextCursor.KeepAnchor锚点固定在原处 QTextCursor.MoveOperation '''包括: QTextCursor.NoMove光标保持在原位; QTextCursor.Start移至文档开头; QTextCursor.StartOfLine移动到当前行开头; QTextCursor.StartOfBlock移动到当前块开头; QTextCursor.StartOfWord移动到当前单词开头; QTextCursor.PreviousBlock移动到上一个块开头; QTextCursor.PreviousCharacter移动到上一个字符; QTextCursor.PreviousWord移动到上一个单词开头; QTextCursor.Up向上移动一行; QTextCursor.Left向左移动一个字符; QTextCursor.WordLeft向左移动一个单词; QTextCursor.End移动到文档末尾; QTextCursor.EndOfLine移动到挡墙末尾; QTextCursor.EndOfWord移动到当前单词末尾; QTextCursor.EndOfBlock移动到当前块末尾; QTextCursor.NextBlock移动到下一个块开头; QTextCursor.NextCharacter移动到下一个字符; QTextCursor.NextWord移动到下一个单词; QTextCursor.Down向下移动一行; QTextCursor.Right向右移动一个字符; QTextCursor.WordRight向右移动一个单词; QTextCursor.NextCell移动到当前表中下一个单元格的开头; QTextCursor.PreviousCell移动到当前表中上一个单元格开头; QTextCursor.NextRow移动到当前表中下一行的第一个单元格; QTextCursor.PreviousRow移动到当前表中上一行的最后一个单元格; ''' QTextCursor.SelectionType#包括:QTextCursor.Document选则整个文档;QTextCursor.BlockUnderCursor选则光标下的文本块;QTextCursor.LineUnderCursor选中光标下的文本行;QTextCursor.WordUnderCursor选中光标下的单词 x.selectedText()#获取选中的文本,str类型 x.selection()#获取选中的文本,QTextDocumentFragment类型 x.selectTableCells()#获取表格单元格,4个返回值分别是:起始行数,一共的行数,起始列,一共的列数 x.selectStart()#选中文本的开始位置 x.selectEnd()#选中文本的结束位置 x.clearSelection()#取消选中,需要反向设置 X.hasSelection()#是否有选中文本 x.removeSelectedText()#移除选中的文本 删除内容: x.deleteChar()#如果没有选中文本,删除光标后一个字符,如果有选中文本,删除选中文本 x.deletePreviousChar()##如果没有选中文本,删除光标前一个字符,如果有选中文本,删除选中文本 位置相关: x.atBlockEnd()#是否在文本块末尾 x.atBlockStart()#是否在文本块开始 x.atEnd()#是否在文档末尾 x.atStart()#是否在文档开始 x.columnNumber()#在第几行 x.position()#光标位置 x.positionInBlock()#在文本块中的位置 开始和结束编辑标识 x.beginEditBlock() x.endEditBlock() ''' 在begin和end之间的操作作为一个整体操作,方便统一撤销和重做 ''' 自动格式化: setAutoFormatting(QTextEdit.AutoFormatting)#QTextEdit.AutoFormatting包含:QTextEdit.AutoNone不做任何自动格式化;QTextEdit.AutoBulletList自动创建项目符号列表;QTextEdit.AutoAll应用所有自动格式 软换行模式: 当内容太多时是否进行软换行以及如何进行软换行 setLineWrapMode(QTextEdit.LineWrapMode)#设置软换行模式,QTextEdit.LineWrapMode包括:QTextEdit.NoWrap没有软换行,超过宽度后水平滚动;QTextEdit.WidgetWidth以控件的宽度为限,但是会保持单词的完整性;QTextEdit.FixedPixelWidth填充像素宽度;QTextEdit.FixedColumnWidth填充列的宽度 setWordWrapMode(QTextOption.WrapMode)#设置单词换行模式,QTextOption.WrapMode包括:QTextOption.NoWrap没有软换行;QTextOption.WordWrap保持单词完整性;QTextOption.WrapAnywhere随意在任何位置换行,只要宽度够了 覆盖模式: setOverwriteMode(bool)#设置是否为覆盖,Ture为覆盖,False为插入模式,也就是不覆盖 光标设置: setCursorWidth(int)#设置光标宽度 对齐方式: setAlignment(Qt.Alignment)#常用的对齐方式有Qt.AlignLeft;Qt.AlignRight;Qt.AlignCenter,并且只用于当前段落 字体格式: 字体家族 setFontFamily(family_str)#可以使用QFontDialog.getFont()来查看可用字体 字体样式 setFontWeight()#字体粗细 setFontItalic(bool)#是否斜体 字体尺寸 setFontPointSize()#字体尺寸 字体效果 setFontUnderlinr(bool)#是否有下划线 统一设置QFont setCurrentFont(QFont) 颜色设置: setTextBackgroundColor(QColor)#将当前格式的文本背景颜色设置为指定颜色 setTextColor(QColor)#将单签格式的文本颜色设置成指定颜色 当前的字符格式: setCurrentCharFormat()#设置格式 mergeCurrentCharFormat()#合并设置 常用编辑操作: copy()#复制 paste()#粘贴 canPaste()#判断是否可以粘贴 setUndoRedoEnabled(bool)#设置是否可以撤销和重做 redo()#重做 undo()#撤销 selectAll()#全选 find()#查找,查找内容后可以加一个参数,包括:QTextDocument.FindBackward向上查找;QTextDocument.FindCaseSensitively区分大小写;QTextDocument.FindWholeWords查找完整单词 滚动: scrollToAnchor()#滚动到指定锚点位置,括号里需要填锚点名称 只读设置: setReadOnly(bool)#设置为只读 tab控制: setTabChangesFocus(bool)#控制TAB键的功能,是否改变焦点,默认是False setTabStopDistance()#制表位的距离,默认80像素 setTabStopWidth()#同上 锚点获取: anchorAt(QPoint)#返回位置pos出的锚点的引用,如果不存在锚点则返回空字符串 QDesktopServices.openUrl(QUrl())#打开超链接,在QUrl()的括号中放入超链接地址 信号: testChanged()#文本内容发生改变时 selectionChanged()#选中内容发生改变时 cursorPositionChanged()#光标位置发生改变时 currentCharFormatChanged()#当前字符格式发生改变时 copyAvailable()#复制可用时 redoAvailable()#重做可用时 undoAvailable()#撤销可用时 三, QPlainTextEdit 介绍: 普通文本编辑器,和QTextEdit大致功能差不多,但针对纯文本处理进行了优化,不支持表格框架,并使用逐行逐段的滚动方法来代替像素精准高度计算 继承: QAbstractScrollArea 功能: 大致和QTextEdit一样: 占位提示文本:同QTextEdit 只读设置:同QTextEdit 字体格式:同QTextEdit 覆盖模式:同QTextEdit tab控制:同QTextEdit 软换行模式: setLineWrapMode(QPlainTextEdit.LineWrapMode)#QPlainTextEdit.LineWrapMode包括:QPlainTextEdit.NoWrap没有软换行;QPlainTextEdit.WidgetWidth超出控件宽度自动换行 文本操作: setPlainText(str)#设置普通文本内容 insertPlainText(str)#插入普通文本 appendPlainText(str)#追加普通文本 appendHtml(str)#追加普通HTML字符串,表格,列表,图片等不支持 toPlainText#获取普通文本内容 块操作: blockCount()#当前块个数,也就是段落数 maximumBlockCount()#最大块个数 setMaximumBlockCount()#设置最大块个数,输入的内容超出最大块个数时,最上面的内容将被删除 常用编辑操作: zoomIn(int)#放大或缩小,正数为放大,负数为缩小,此方法也适用于QTextEdit 滚动: centerCursor()#控制光标,尽可能保证光标在文本框中间 ensureCursorVisible()#保证光标可见 光标: textCursor()#获取文本光标对象 cursorForPosition()#获取指定位置的光标对象 setCursorWidth()#设置文本光标宽度 cursorRect()#获取文本光标矩形 moveCursor()#移动光标和锚点 信号: testChanged()#文本内容发生改变时 selectionChanged()#选中内容发生改变时 cursorPositionChanged()#光标位置发生改变时 copyAvailable()#复制可用时 redoAvailable()#重做可用时 undoAvailable()#撤销可用时 ***以上信号同QTextEdit modificationChanged()#修改状态发生改变时 blockCountChanged()#块的个数发生改变时 updateRequest()#内容更新请求时,有2个参数,一个是更新区域,一个是Y轴位移 四,QKeySequenceEdit 介绍: 控件允许输入QKeySequence,通常用作快捷键,当控件收到焦点时开始录制,并在用户释放最后一个关键字后一秒钟结束录制 继承: QWidget 功能: setKeySequence(QKeySequence)#快捷键的设置 clear()#清空 信号: editingFinished()#结束编辑时 keySequenceChanged()#建伟序列改变时 ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:BB贩卖团,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |