QLineEdit是一个单行文本输入框。 QLineEdit允许用户输入和编辑单行纯文本,提供了很多有用的编辑功能,包括:撤消和重做、剪切和粘贴、以及拖放(见setDragEnabled())。 通过改变输入框的echoMode(),同时也可以设置为一个只写字段,用于输入密码等。 文本的长度可以被限制为maxLength(),可以使用一个validator()或inputMask()来任意限制文本。当在同一个输入框中切换验证器和输入掩码的时候,最好是清除验证器或输入掩码,防止不确定的行为。简述内容详细介绍共有类型常用接口信号共有槽示例QLineEditEchoMode效果效果源码自定义搜索框效果源码验证器效果源码输入掩码效果源码更多参考内容详细介绍 与其相关的一个类是QTextEdit允许多行、富文本编辑。 可以使用setText()或insert()来改变文本,通过text()来获取文本;显示的文本(可能不同,详见:EchoMode)通过displayText()来获取。文本可以使用setSelection()或selectAll()来选中,选中的文本可以被cut()、copy()和paste(),使用setAlignment()来设置文本的对齐方式。 当文本改变时,会发射textChanged()信号。当使用setText()改变文本时,textEdited()信号也会发射。光标位置发生变化时,会发射cursorPositionChanged()信号,当Return或Enter键被按下时,发射returnPressed()信号。 当编辑完成,或者是因为输入框失去焦点,或ReturnEnter键被按下时,发出的editingFinished()信号。 注意:如果输入框有一个验证器,returnPressed()editingFinished()信号只有在验证期返回QValidator::Acceptable的时候才会被发射。 默认情况下,QLineEdit具有由平台风格指南规定的边框,可以通过setFrame(false)将其关闭。 【领QT开发教程学习资料,点击下方链接莬费领取,先码住不迷路】 点击领取链接 默认键被绑定描述如下。输入框还提供了一些编辑选项的上下文菜单(通常通过单击鼠标右键调用)。 按键 动作 LeftArrow 光标左移一个字符 ShiftLeftArrow 光标左移并选择一个字符 RightArrow 光标右移一个字符 ShiftRightArrow 光标右移并选择一个字符 Home 将光标移动到行的开头 End 将光标移动到行的末尾 Backspace 删除光标左侧字符 CtrlBackspace 删除光标左侧的单词 Delete 删除光标右侧字符 CtrlDelete 删除光标右侧的单词 CtrlA 全选 CtrlC 复制选中的文本复制到剪贴板 CtrlInsert 复制选中的文本复制到剪贴板 CtrlK 删除此处至末尾所有内容 CtrlV 粘贴剪贴板的文本到输入框中 ShiftInsert 粘贴剪贴板的文本到输入框中 CtrlX 剪切选中的文本到剪贴板 ShiftDelete 剪切选中的文本到剪贴板 CtrlZ 撤销上一次操作 CtrlY 重做上一次操作共有类型枚举:QLineEdit::ActionPosition描述如何显示加入到输入框中的action部件。 常量 值 描述 QLineEdit::LeadingPosition 0hr当使用布局方向Qt::LeftToRight时,部件显示在文本左侧;使用Qt::RightToLeft时,则显示在右侧。 QLineEdit::TrailingPosition 1hr当使用布局方向Qt::LeftToRight时,部件显示在文本右侧;使用Qt::RightToLeft时,则显示在左侧。 枚举:QLineEdit::EchoMode描述输入框如何显示其内容。 常量 值 描述 QLineEdit::Normal 0hr正常显示输入的字符,默认选项。 QLineEdit::NoEcho 1hr不显示任何输入,常用于密码类型,其密码长度都需要保密的时候。 QLineEdit::Password 2hr显示平台相关的密码掩码字符,而不是实际的字符输入。 QLineEdit::PasswordEchoOnEdit 3hr在编辑的时候显示字符,负责显示密码类型。常用接口 这里列举了一些常用接口,但并非全部的,要获得更多信息请参考助手。QStringtext()const 返回输入框的当前文本。voidaddAction(QActionaction,ActionPositionposition)QActionaddAction(constQIconicon,ActionPositionposition) 添加action至指定位置。Qt::Alignmentalignment()constvoidsetAlignment(Qt::Alignmentflag)alignment:Qt::Alignment 属性保存了输入框的对齐方式(水平和垂直方向)。Qt::AlignJustify映射到Qt::AlignLeft。 默认情况下,该属性包含Qt::AlignLeft和Qt::AlignVCenter。QCompletercompleter()constvoidsetCompleter(QCompleterc) QCompleter后面详细讲解。voiddeselect() 取消选中任何已选中的文本。QStringdisplayText()const 返回显示的文本。默认值为一个空字符串。 如果echoMode是Normal,和text()返回的一样;如果EchoMode是Password或PasswordEchoOnEdit,会返回平台相关的密码掩码字符,长度为text()。length(),例如:;如果EchoMode是NoEcho,返回一个空字符串。QStringselectedText()const 返回选中的的文本。如果没有选中,返回一个空字符串。默认为一个空字符串。intcursorPosition()constvoidsetCursorPosition(int)cursorPosition:int 属性包含输入框当前光标的位置。设置光标位置时,会导致应有的重绘。默认情况下,属性值为0。EchoModeechoMode()constvoidsetEchoMode(EchoMode)echoMode:EchoMode 属性保存了输入框的显示模式。显示模式决定了输入框对用户的文本显示。默认值为Normal 最常用的设置是Normal,用户输入文本被逐字显示;还包含其它模糊输入,例如:NoEcho、Password和PasswordEchoOnEdit。 部件的显示、复制或拖动文本的行为受此设置的影响。intmaxLength()constvoidsetMaxLength(int)maxLength:int 此属性包含文本的最大允许长度。如果文本太长,将从限制的位置截断。默认值为32767。 如果发生截断任何选中的文本将取消选中,光标位置设置为0,并且显示字符串的第一部分。 如果输入框有一个输入掩码,那么,掩码定义字符串的最大长度。QStringplaceholderText()constvoidsetPlaceholderText(constQString)placeholderText:QString 当输入框为空时,输入框显示一个灰色的占位符文本。默认值为一个空字符串。 通常,一个空的输入框显示占位符文本,即使它有焦点。然而,如果内容水平居中,当输入框有焦点时,占位符文本不显示在光标下。boolisReadOnly()constvoidsetReadOnly(bool)readOnly:bool 此属性保存输入框是否为只读。 在只读模式下,用户仍然可以将文本复制到剪贴板,或拖放文本(如果echoMode()是Normal),但不能编辑它。 只读模式下,QLineEdit也不显示光标。voidsetSelection(intstart,intlength) 从位置start选择文本为length个字符,允许负长度。voidsetValidator(constQValidatorv) 设置输入框的验证器,将限制任意可能输入的文本。如果v0,将会清除当前的输入验证器 如果v0,setValidator()删除当前的输入验证器。初始设置是没有输入验证器(即:接受任何输入到maxLength())。constQValidatorvalidator()const 返回一个当前输入的验证器指针,如果没有设置验证器,返回0。QStringinputMask()constvoidsetInputMask(constQStringinputMask)inputMask:QString 此属性保存验证器的输入掩码。如果没设置研发,inputMask()或返回一个空字符串。传递一个空字符串可以取消验码并返回一个正常QLineEdit。 下表列出了可在一个输入掩码中使用的字符。空格字符,是一个空白的缺省字符,当一个字符是允许的,但不是必须的请胯下。 字符 含义 A ASCII字母字符是必须的,AZ、az。 a ASCII字母字符是允许的,但不是必须的。 N ASCII字母字符是必须的,AZ、az、09。 n ASCII字母字符是允许的,但不是必须的。 X 任何字符都是必须要的。 x 任何字符都是允许的,但不是必须要的。 9hrASCII数字是必须要的,09。 0hrASCII数字是允许的,但不是必须要的。 D ASCII数字是必须要的,19。 d ASCII数字是允许的,但不是必须要的(19)。 ASCII数字或加减符号是允许的,但不是必须要的。 H 十六进制数据字符是必须要的,AF、af、09。 h 十六进制数据字符是允许的,但不是必须要的。 B 二进制数据字符是必须要的,01。 b 二进制数据字符是允许的,但不是必须要的。 所有的字符字母都大写 所有的字符字母都小写 ! 关闭大小写转换 使用去转义上述列出的字符。 掩码由掩码字符和分隔符字符串组成,后面可以跟一个分号和用于空白的字符,空白字符在编辑后总是从文本中删除。 示例: 掩码 注意事项 000。000。000。000; IP地址,空白是。 HH:HH:HH:HH:HH:HH; MAC地址。 00000000 ISO日期,空白是空格。 AAAAAAAAAAAAAAAAAAAAAAAAA; License号,空白是和所有(字母)字符转换为大写。信号voidselectionChanged() 只要选择改变这个信号就会被发射。voidcursorPositionChanged(intold,intnew) 只要光标移动,这个信号就会发射。前面的位置old,新的位置是new。voideditingFinished()voidreturnPressed()voidtextChanged(constQStringtext)voidtextEdited(constQStringtext) 参考:详细描述共有槽voidclear() 清除输入框内容voidcopy()const 如果echoMode()是Normal,将选中的文本复制到剪贴板。voidcut() 如果echoMode()是Normal,将所选文本复制到剪贴板并删除它。 如果当前的验证不允许删除选定的文本,cut()将复制而不删除。voidpaste() 如果输入框不是只读的,插入剪贴板中的文本到光标所在位置,删除任何选定的文本。 如果最终的结果不被当前的验证器接受,将没有任何反应。voidredo() 重做上次操作,如果redo可用(isRedoAvailable())。voidselectAll() 选中所有文本(即:高亮),并将光标移动到末尾。当一个默认值被插入时,这非常有用,因为如果用户在点击部件之前就输入,选中的文本将被删除。voidsetText(constQString) 设置输入框显示的文本。voidundo() 撤消上次操作,如果撤消可用(isUndoAvailable())。取消任何当前的选中,并更新选中到当前光标位置。示例QLineEdit::EchoMode效果 首先,来演示QLineEdit::EchoMode的效果。效果 源码QLineEditpNormalLineEditnewQLineEdit(this);QLineEditpNoEchoLineEditnewQLineEdit(this);QLineEditpPasswordLineEditnewQLineEdit(this);QLineEditpPasswordEchoOnEditLineEditnewQLineEdit(this);pNormalLineEditsetPlaceholderText(Normal);pNoEchoLineEditsetPlaceholderText(NoEcho);pPasswordLineEditsetPlaceholderText(Password);pPasswordEchoOnEditLineEditsetPlaceholderText(PasswordEchoOnEdit);设置显示效果pNormalLineEditsetEchoMode(QLineEdit::Normal);pNoEchoLineEditsetEchoMode(QLineEdit::NoEcho);pPasswordLineEditsetEchoMode(QLineEdit::Password);pPasswordEchoOnEditLineEditsetEchoMode(QLineEdit::PasswordEchoOnEdit);自定义搜索框 关于搜索框,我们经常接触。例如:浏览器搜索、Windows资源管理器搜索等。效果 源码 通过QLineEdit的addAction()函数来加入action,这里我们使用了重载函数。mpLineEditnewQLineEdit(this);mpLabelnewQLabel(this);mpLineEditsetPlaceholderText(QString::fromLocal8Bit(请输入搜索内容));添加actionQActionpLeadingActionnewQAction(this);pLeadingActionsetIcon(QIcon(:Imagesleading));mpLineEditaddAction(pLeadingAction,QLineEdit::LeadingPosition);QActionpTrailingActionmpLineEditaddAction(QIcon(:Imagestrailing),QLineEdit::TrailingPosition);连接信号和槽connect(pTrailingAction,SIGNAL(triggered(bool)),this,SLOT(onSearch(bool))); 槽函数,用于获取输入框中的内容,然后处理。voidMainWindow::onSearch(boolchecked){QStringstrTextmpLineEdittext();mpLabelsetText(QString::fromLocal8Bit(输入内容为:1)。arg(strText));}验证器 通常情况下,我们会对用户的输入做一些限制,可以通过验证起来设置,常见的有:整形、浮点型及其它自定义验证器。效果 源码QLineEditpIntLineEditnewQLineEdit(this);QLineEditpDoubleLineEditnewQLineEdit(this);QLineEditpValidatorLineEditnewQLineEdit(this);pIntLineEditsetPlaceholderText(QString::fromLocal8Bit(整形));pDoubleLineEditsetPlaceholderText(QString::fromLocal8Bit(浮点型));pValidatorLineEditsetPlaceholderText(QString::fromLocal8Bit(字母和数字));整形范围:〔1,99〕QIntValidatorpIntValidatornewQIntValidator(this);pIntValidatorsetRange(1,99);浮点型范围:〔360,360〕精度:小数点后2位QDoubleValidatorpDoubleValidatornewQDoubleValidator(this);pDoubleValidatorsetRange(360,360);pDoubleValidatorsetNotation(QDoubleValidator::StandardNotation);pDoubleValidatorsetDecimals(2);字符和数字QRegExpreg(〔azAZ09〕34;);QRegExpValidatorpValidatornewQRegExpValidator(this);pValidatorsetRegExp(reg);pIntLineEditsetValidator(pIntValidator);pDoubleLineEditsetValidator(pDoubleValidator);pValidatorLineEditsetValidator(pValidator);输入掩码 要限制用户输入,除了验证器,还可以使用输入掩码,常见的有IP、MAC地址、日期、License号等。效果 源码QLineEditpIPLineEditnewQLineEdit(this);QLineEditpMACLineEditnewQLineEdit(this);QLineEditpDateLineEditnewQLineEdit(this);QLineEditpLicenseLineEditnewQLineEdit(this);pIPLineEditsetInputMask(000。000。000。000;);pMACLineEditsetInputMask(HH:HH:HH:HH:HH:HH;);pDateLineEditsetInputMask(00000000);pLicenseLineEditsetInputMask(AAAAAAAAAAAAAAAAAAAAAAAAA;);