QLineEdit:如何将光标放在键入文本的末尾?

  • 本文关键字:文本 光标 QLineEdit c++ qt
  • 更新时间 :
  • 英文 :


有一个QLineEdit,您需要在其中输入电话号码。给他一个面具

ui->lineEdit_4->setInputMask("+7\(999\)999\-99\-99;_");

此外,在保存数据时,验证器将检查输入的字符串:

QRegularExpression numberRegex ("^\+\d{1,1}\(\d{3,3}\)\d{3,3}\-\d{2,2}\-\d{2,2}$");
QRegularExpressionValidator *numberValidator = new QRegularExpressionValidator (numberRegex);
QString a = ui->lineEdit_4->text();
int b = ui->lineEdit_4->cursorPosition();
if(numberValidator->validate(a, b) == QValidator::Acceptable){
....
}

上面我描述了一切,现在是问题的本质。打字非常不方便,因为游标没有连接到任何东西上。无论在哪里单击,光标都会出现在那里。如何使光标出现在需要键入文本的地方?到目前为止,在想法中只有一个检查光标位置的方法,每次它发生变化时,把它放在第一个";排队。但有些事听起来很疯狂

连接此信号:https://doc.qt.io/qt-5/qlineedit.html#cursorPositionChanged

在目标方法中,使用以下命令将光标移动到字段的末尾:https://doc.qt.io/qt-5/qlineedit.html#end

像这样:

QObject::connect(
ui->lineEdit_4,
&QLineEdit::cursorPositionChanged,
this,
[this](){
ui->lineEdit_4->end(false);
});

最新更新