Две небольшие проблемы ...
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());
Надежда, что помогает.
becasuse когда вы пишете письмо он больше не соответствует регулярному выражению, а также пробел будет нижним регистром '\\ s' –