Название: Запрет на ввод символов Отправлено: Amouse от Апрель 08, 2008, 18:08 Как для QItemDelegate запретить ввод некоторых символов, чтобы они даже не появлялись на экране?
Название: Re: Запрет на ввод символов Отправлено: Mikhail от Апрель 08, 2008, 18:28 Как для QItemDelegate запретить ввод некоторых символов, чтобы они даже не появлялись на экране? Наследуй QItemDelegate. В своем делегате: QWidget * QItemDelegate::createEditor ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) Здесь должен создаваться твой редактор в котором можно фильтровать ввод. Название: Re: Запрет на ввод символов Отправлено: Amouse от Апрель 09, 2008, 18:30 запрет вроде наладил, но есть еще вопрос -
надо выкидывать сообщение юзеру (messageBox?) когда он давит запретную клавишу. Но при этом фокус с edit`a снимается, и редактирование строки завершается. Что тут можно придумать? Название: Re: Запрет на ввод символов Отправлено: Mikhail от Апрель 09, 2008, 19:03 запрет вроде наладил, но есть еще вопрос - надо выкидывать сообщение юзеру (messageBox?) когда он давит запретную клавишу. Но при этом фокус с edit`a снимается, и редактирование строки завершается. Что тут можно придумать? Ну например сделать завершение редактирование по Enter. Название: Re: Запрет на ввод символов Отправлено: Icoz от Апрель 09, 2008, 22:35 запрет вроде наладил, но есть еще вопрос - У своего делегата перехватывать textChanged (если это какой-нибудь qlineedit), проверять в QValidator и изменять фон на красный, если воод неверен. У меня так в одном проекте сделано.надо выкидывать сообщение юзеру (messageBox?) когда он давит запретную клавишу. Но при этом фокус с edit`a снимается, и редактирование строки завершается. Что тут можно придумать? Название: Re: Запрет на ввод символов Отправлено: Amouse от Апрель 10, 2008, 10:10 У своего делегата перехватывать textChanged (если это какой-нибудь qlineedit), проверять в QValidator и изменять фон на красный, если воод неверен. У меня так в одном проекте сделано. такое к сожалению не пойдет, нужна именно мессага. И в идеале - чтобы редактирование не прервалось и юзер мог продолжить. Название: Re: Запрет на ввод символов Отправлено: ритт от Апрель 10, 2008, 13:37 невозможно показать диалоговое окно чтобы при этом не изменился фокус
навскидку пара решений: * показывать сообщение в статусной строке / в зарезервированном под сообщения лабеле * принудительно показывать тултип над редактором с сообщением о неправильном вводе опера, например, показывает кастомный тултип с мигающим текстом, когда длина введённого текста превышает допустимую - вполне интуитивно Название: Re: Запрет на ввод символов Отправлено: Amouse от Апрель 14, 2008, 11:15 невозможно показать диалоговое окно чтобы при этом не изменился фокус проблему решил и с измененим фокуса, но интересно, как в Qt сделать окошко(?) навроде того, которое выкидывает винда при попытке переименовать файл в explorer`е, введя в имя недопустимый символ... Название: Re: Запрет на ввод символов Отправлено: ритт от Апрель 14, 2008, 11:47 тултип
|