作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 QRegExValidator 验证 QLineEdit 时遇到问题。它应该只接受名字和姓氏之间有一个空格。我几乎遵循了这里的示例:
http://doc.qt.digia.com/4.6/qregexpvalidator.html
代码编译,我可以运行程序,但我无法在 lineedit 字段中输入任何字母。为什么?
QString name_rx = "[A-z]+\\S[A-z]+";
QRegExp rx;
QValidator *validator = new QRegExpValidator(rx, this); // this means mainwindow
rx.setPattern(name_rx);
ui->nameEdit->setValidator(validator);
ui->nameEdit->setMaxLength(32);
这就是检查输入字段所需的全部吗?
最佳答案
两个小问题...
QString name_rx = "([A-Z]|[a-z])+\\s([A-Z]|[a-z])+";// Note, \\s not \\S
QRegExp rx;
rx.setPattern(name_rx);// Note, happens BEFORE use in the validator
另一种可接受的方法是:
QString name_rx = "[a-z]+\\s[a-z]";// Note, \\s not \\S
QRegExp rx;
rx.setCaseSensitivity(Qt::CaseInsensitive);
rx.setPattern(name_rx);// Note, happens BEFORE use in the validator
这里它被添加到验证器
QValidator *validator = new QRegExpValidator(rx, this); // this means mainwindow
ui->nameEdit->setValidator(validator);
ui->nameEdit->setMaxLength(32);
也是一个很好的例子,看看这个页面:
http://doc.qt.digia.com/4.6/tools-settingseditor-variantdelegate-cpp.html
它有所有这些示例,专门用于将 QRegEx
与 QRegExValidator
一起用于行编辑:
boolExp.setPattern("true|false");
boolExp.setCaseSensitivity(Qt::CaseInsensitive);
byteArrayExp.setPattern("[\\x00-\\xff]*");
charExp.setPattern(".");
colorExp.setPattern("\\(([0-9]*),([0-9]*),([0-9]*),([0-9]*)\\)");
doubleExp.setPattern("");
pointExp.setPattern("\\((-?[0-9]*),(-?[0-9]*)\\)");
rectExp.setPattern("\\((-?[0-9]*),(-?[0-9]*),(-?[0-9]*),(-?[0-9]*)\\)");
signedIntegerExp.setPattern("-?[0-9]*");
sizeExp = pointExp;
unsignedIntegerExp.setPattern("[0-9]*");
dateExp.setPattern("([0-9]{,4})-([0-9]{,2})-([0-9]{,2})");
timeExp.setPattern("([0-9]{,2}):([0-9]{,2}):([0-9]{,2})");
dateTimeExp.setPattern(dateExp.pattern() + "T" + timeExp.pattern());
希望对您有所帮助。
关于c++ - 将 QRegExValidator 用于 QLineEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322187/
我在使用 QRegExValidator 验证 QLineEdit 时遇到问题。它应该只接受名字和姓氏之间有一个空格。我几乎遵循了这里的示例: http://doc.qt.digia.com/4.6/
我是一名优秀的程序员,十分优秀!