Qt应用开发(基础篇)——行文本编辑框 QLineEdit

一、前言

        QLineEdit类继承于QWidget,是Qt设计用来输入或者显示一行文本的编辑框部件。

 

        QLineEdit行编辑框,允许用户输入和编辑单行纯文本,并可以使用快捷编辑功能,包括复制、粘贴、剪切和拖放。是项目开发中最常用的输入控件。

         行文本编辑器,顾名思义可以编辑文本,使用setDragEnabled()启动拖放功能,直接从外部或者其他部件把文本拖进来,经典用法在我们写烧录软件的时候,把烧录文件直接从桌面拖进来,

        拖放机制 Drag and Drop

二、属性和方法

 1、text

        该属性代表当前标签文本内容。

QString text() const           
void setText(const QString &)  

2、maxLength

        该属性编辑器文本的最大允许长度。最大值为32767,如果文本太长,它将在限制处被截断。

 int maxLength() const       
 void setMaxLength(int)     

3、alignment

        该属性代表文本水平和垂直方向对齐方式,同一时间可以同时指定两个方向的对齐方式。默认的对齐方式为水平靠左、垂直居中。

Qt::Alignment alignment() const         
void setAlignment(Qt::Alignment flag)   

Qt::AlignLeft:         //水平靠左。
Qt::AlignRight:        //水平靠右。
Qt::AlignHCenter:      //水平居中。
Qt::AlignJustify:      //水平调整间距两端对齐。
垂直标志
Qt::AlignTop:          //垂直靠上。
Qt::AlignBottom:       //垂直靠下。
Qt::AlignVCenter:      //垂直居中。
Qt::AlignBaseline:     //垂直与基线对齐。
组合标志
Qt::AlignCenter:       两个维度的中心,等价于 Qt::AlignHCenter | Qt::AlignVCenter。

4、 EchoMode

        该属性代表编辑框的回显模式,回显模式决定如何显示QLineEdit中输入的文本。

QLineEdit::EchoMode echoMode() const       
void setEchoMode(QLineEdit::EchoMode)    
QLineEdit::EchoMode描述
Normal 正常显示输入的字符(默认值)
NoEcho不显示任何东西,适用于连密码长度都要保密的密码。
Password 显示平台相关的密码掩码字符,而不是实际输入的字符。
PasswordEchoOnEdit 编辑时显示输入的字符,否则显示密码掩码字符

5、readOnly

        该属性保留行编辑是否为只读。在只读模式下,不显示游标,可以将文本复制到剪贴板,或者拖放文本(当echoModeQLineEdit::Normal),但不能编辑它。

bool isReadOnly() const           
void setReadOnly(bool)            

6、clearButtonEnabled

        该属性用于确定行编辑器在不为空时是否显示清除按钮。启用时,当QLineEdit包含一些文本时,将显示一个后面的清除按钮,否则不显示。

 bool isClearButtonEnabled() const          
 void setClearButtonEnabled(bool enable)    

    

 7、placeholderText

        该属性保存行编辑的占位符文本。

 QString placeholderText() const            
 void setPlaceholderText(const QString &)   

8、modified

        该属性表示行编辑器的内容是否已被用户修改。

bool isModified() const         
void setModified(bool)         

9、cursorPosition

        该属性表示此行编辑的当前光标位置。

 int cursorPosition() const           
 void setCursorPosition(int)        

10、displayText

       该属性表示编辑框显示的文本。返回值由echoMode的值决定。如果echoMode为Normal,则返回与text()相同的结果。如果echoMode是Password或PasswordEchoOnEdit,它返回一个大小取决于平台的密码掩码字符长度的字符串。如果echoMode是NoEcho,则返回一个空字符串。

QString displayText() const   

11、dragEnabled 

        该属性表示编辑框是否支持拖动机制,如果用户在某些选定文本上按下并移动鼠标,则lineedit是否开始拖动,此属性将保留该属性。

bool dragEnabled() const       
void setDragEnabled(bool b)    

 

        PS:实际项目中,经常会出现需要把外部文件直接拉进QLineEdit,然后显示文件路径的情况,这时候就需要用到Drag and Drop机制。

12、frame

        该属性表示确定线条编辑器是否使用边框。

 bool hasFrame() const       //获取是否有边框
 void setFrame(bool)         //设置是否有边框

13、redoAvailable

        该属性表示是否可重做,当用户对行编辑中的文本执行了一个或多个撤销(CTRL+Z)操作后,值变化为true,当全部重做(CTRL+Y)之后,值变化为false。

bool isRedoAvailable() const    //是否可重做

14、undoAvailable

        该属性表示是否可撤销,一旦用户在行编辑中修改了文本,值变化为true,全部撤销之后,值会变成false。

bool isUndoAvailable() const    //是否可撤销

15、cursorMoveStyle

        该属性表示保存此行编辑中光标的移动样式。

Qt::CursorMoveStyle cursorMoveStyle() const        //获取当前的移动样式
void setCursorMoveStyle(Qt::CursorMoveStyle style) //设置当前的移动样式
  • Qt::LogicalMoveStyle:在从左到右的文本块内,按左箭头键时减少光标位置,按右箭头键时增加光标位置。如果文本块是从右到左的,则应用相反的行为。
  • Qt::VisualMoveStyle:按下左箭头键将始终使光标向左移动,无论文本的书写方向如何。 按右箭头键将始终使光标向右移动。

16、acceptableInput

        该属性表示输入是否满足inputMask和验证器。默认情况下,此属性为true。

bool hasAcceptableInput() const

17、inputMask

        该属性表示验证输入掩码

QString inputMask() const                    //获取当前掩码,如果没有设置则有“”
void setInputMask(const QString &inputMask   //设置当前掩码,取消掩码则设置为“”

下表列出了输入掩码的占位符和字面字符,并说明其如何控制数据输入

  • A:ASCII字母字符是必须输入的(A-Z,a-z)
  • a:ASCII字母字符是允许输入的,但不是必须输入的
  • N:ASCII字母字符是必须输入的(A-Z,a-z,0-9
  • n:ASCII字母字符是允许输入的,但不是必须输入的
  • X:任何字符都是必须输入
  • x:任何字符都是允许输入的,但不是必须输入的
  • 9:ASCII数字字符是必须输入的(0-9)
  • 0:ASCII数字字符是允许输入的,但不是必须输入的
  • D:ASCII数字字符是必须输入的(1-9)
  • d:ASCII数字字符是允许输入的,但不是必须的(1-9)
  • #:ASCII数字字符与加减字符是允许输入的,但不是必须的
  • H:十六进制格式字符是必须输入的(A-F,a-f,0-9)
  • h:十六进制格式字符允许输入,但不是必须的
  • B:二进制格式字符是必须输入的(0,1)
  • b:二进制格式字符是允许输入的,但不是必须的
  • >:所有字母字符都大写
  • <:所有字母字符都小写
  • !:关闭大小写转换
  • \:使用‘\’转义上面列出的字符

Examples:

  • 000.000.000.000;                                                 //IP地址 银行卡余额
  • HH:HH:HH:HH:HH:HH;                                        //Mac地址
  • 0000-00-00;                                                         //时间
  • >AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;        //#牌照号码

18、公共函数

1)hasSelectedTex

       返回是否有选定部分或全部文本。

bool hasSelectedText() const
2)selectedText  

      获取选定部分的文本。

QString selectedText() const
3)validator   

      获取编辑器设置的掩码规则。

const QValidator *validator() const
4)setValidator

        设置掩码规则,使用QDoubleValidator, QIntValidator, QRegExpValidatorQRegularExpressionValidator这些继承于QValidator的类进行封装,是QLineEdit设置掩码的一种方式。

void setValidator(const QValidator *v)     //设置掩码

Examples:

 QValidator *validator = new QIntValidator(100, 999, this);
 QLineEdit *edit = new QLineEdit(this);
 // 输入框将会接收从100~999的自然数输入
 edit->setValidator(validator);

 QValidator *validator_double = new QIntValidator(-100, 100, this);
 QLineEdit *edit_2 = new QLineEdit(this);
 // 输入框将会接收从-100~100的整数输入
 edit_2->setValidator(validator_double);

 // regexp: optional '-' followed by between 1 and 3 digits
 QRegExp rx("-?\\d{1,3}");
 QValidator *validator_3 = new QRegExpValidator(rx, this);
 QLineEdit *edit_3 = new QLineEdit(this);
 edit_3->setValidator(validator_3);
  • "[a-zA-Z0-9]+$"                                            //限制只允许出现大小写字母和数字
  • "^-?(180|1?[0-7]?\d(\.\d{1,4})?)$"  //限制浮点数输入范围为[-180,180],小数位后4位
  • "^([1-9]|[1-9]\d|100)$"                          //限制整数输入访问[1,100]

正则表达式语法

正则表达式测试

5)Completer

        返回自动补全器规则。

QCompleter *completer() const 
6)setCompleter 

        设置自动补全器,通常与QValidatorQLineEdit::inputMask一起使用。

void setCompleter(QCompleter *c)
 QStringList wordList;
 wordList << "alpha" << "omega" << "omicron" << "zeta";
 QLineEdit *lineEdit = new QLineEdit(this);
 QCompleter *completer = new QCompleter(wordList, this);
 completer->setCaseSensitivity(Qt::CaseInsensitive);
 lineEdit->setCompleter(completer);

19、公共槽函数

void clear()        //清除文本
void copy() const   //复制
void cut()          //剪切
void paste()        //粘贴
void redo()         //重制
void selectAll()    //选择全部文本
void undo()         //撤销

20、信号

1)cursorPositionChanged

        光标移动时触发此信号,oldPos表示前一个位置,newPos表示新位置。

void cursorPositionChanged(int oldPos, int newPos)
2)editingFinished

       当按下回车键或行编辑失去焦点时,触发此信号。

void editingFinished()
3)inputRejected

       当用户按下一个不被认为是可接受输入的键时,就会发出这个信号,比如你设置为只能输入数字,而当用户输入一个字母的时候就会触发此信号。

void inputRejected()
4)returnPressed

        按下回车键时触发此信号。

5)selectionChanged

        文本选择发生变化时触发此信号。

6)textChanged

        文本发生变化时触发此信号。

void textChanged(const QString &text)
7)textEdited

        文本发生编辑的时候触发此信号。

void textEdited(const QString &text)   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波塞冬~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值