Qt应用开发——QLineEdit的使用

目录

一、概述

二、属性和方法

三、信号


一、概述

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

        默认键绑定描述如下。

  • Left Arrow                     //将光标向左移动一个字符。
  • Shift+Left Arrow           //将文本向左移动并选择一个字符。
  • Right Arrow                  //将光标向右移动一个字符。
  • Shift+Right Arrow        //向右移动并选择文本一个字符。
  • Home                            //将光标移动到行首。
  • End                               //将光标移动到行尾。
  • Backspace                   //删除光标左侧的字符。
  • Ctrl+Backspace           //删除光标左侧的单词。
  • Delete                           //删除光标右侧的字符。
  • Ctrl+Delete                  //删除光标右侧的单词。
  • Ctrl+A                          //全选
  • Ctrl+C                          //将选定的文本复制到剪贴板。
  • Ctrl+V                          //将剪贴板文本粘贴到行编辑中。
  • Ctrl+Insert                   //将选定的文本复制到剪贴板。
  • Ctrl+K                          //删除到行尾。 
  • Shift+Insert                 //将剪贴板文本粘贴到行编辑中。
  • Ctrl+X                          //删除所选文本并将其复制到剪贴板。
  • Shift+Delete                //删除所选文本并将其复制到剪贴板。
  • Ctrl+Z                          //撤消最后一个操作。
  • Ctrl+Y                          //重做上次未完成的操作。

二、属性和方法

 1、text 属性代表当前标签内容

QString text() const           //当前内容
void setText(const QString &)  //设置内容

2、maxLength 属性保存文本的最大允许长度。最大值为32767,如果文本太长,它将在限制处被截断。

 int maxLength() const         //获取最大长度
 void setMaxLength(int)        //设置最大长度

3、alignment 属性代表文本水平和垂直方向对齐,同一时间可以同时指定两个方向的对齐方式。默认的对齐方式为水平靠左、垂直居中。Qt::Alignment定义参考QLabel,不多描述。

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::Normal                          正常显示输入的字符(默认值)
  • QLineEdit::NoEcho                         不显示任何东西,适用于连密码长度都要保密的密码。
  • QLineEdit::Password                      显示平台相关的密码掩码字符,而不是实际输入的字符。
  • QLineEdit::PasswordEchoOnEdit   编辑时显示输入的字符,否则显示密码掩码字符

5、readOnly 属性保留行编辑是否为只读。在只读模式下,不显示游标,可以将文本复制到剪贴板,或者拖放文本(当echoMode为QLineEdit::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)    //设置拖动使能

 

12、frame 属性用于确定线条编辑器是否使用边框。

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

13、hasSelectedTex与selectedText   hasSelectedTex保存是否有选定部分或全部文本,selectedText保存所选的文本,配合使用。

bool hasSelectedText() const   //是否有选中的文本
QString selectedText() const   //获取选中的文本

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

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

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

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

16、cursorMoveStyle 属性保存此行编辑中光标的移动样式。

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

17、acceptableInput 属性保存输入是否满足inputMask和验证器。默认情况下,此属性为true。

bool hasAcceptableInput() const

18、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;        //#牌照号码

19、validator 设置掩码,使用QDoubleValidator, QIntValidator, QRegExpValidator和QRegularExpressionValidator这些继承于QValidator的类进行封装,然后使用setValidator设置,也是QLineEdit设置掩码的一种方式。

const QValidator *validator() const        //获取掩码  
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]

正则表达式语法

正则表达式测试

20、Completer  自动补全器,通常与QValidator或QLineEdit::inputMask一起使用。

QCompleter *completer() const          //获取自动补全器
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);

三、信号

void cursorPositionChanged(int oldPos, int newPos) //光标移动时触发此信号,oldPos表示前一个位置,newPos表示新位置
void editingFinished()   //当按下回车键或行编辑失去焦点时,触发此信号
void inputRejected()     //当用户按下一个不被认为是可接受输入的键时,就会发出这个信号,比如你设置为只能输入数字,而当用户输入一个字母的时候就会触发此信号。
void returnPressed()    //按下回车键时触发此信号
void selectionChanged()   //选择发生变化时触发此信号
void textChanged(const QString &text)   //文本发生变化时触发此信号
void textEdited(const QString &text)   //文本发生编辑的时候触发此信号

        实际项目开发中最常用的就是textChanged,一般通过此信号检测用户输入,然后改变窗口状态,显示为已编辑。

猜你喜欢

转载自blog.csdn.net/u014491932/article/details/131803212