2013-06-08 6 views
1

Я ищу способ ограничить редактирование строк, чтобы принимать только буквенно-цифровые символы, тире и подчеркивание (целая строка может быть только одной чертой и одним подчеркиванием), без пробелов. Я смотрел на RegExp, но потом я оставил эту опцию, потому что я нашел сообщение в блоге, в котором объясняется, что RegExp работает очень медленно. Теперь я не знаю, что лучший способ ограничить редактирование строк, поэтому выход будет таким, какой я хочу.Qt C++: Редактирование строки принимают только буквенно-цифровые символы, тире и подчеркивание

Что вы рекомендуете?

+1

http://qt-project.org/doc/qt-4.8/qregexpvalidator.html –

+1

«что RegExp очень медленный»: вы проверяете ввод строки, которая обычно представляет собой пару символов, обычно введенный человеком. Я сомневаюсь, что QRegExp станет узким местом. –

ответ

3

Вы должны прочитать документацию QLineEdit :: setValidator и документацию класса QValidator. Вы можете определить свой собственный класс валидатора (который наследует QValidator) и передать экземпляр объекта объекту QLineEdit (используя функцию setValidator).