Название: Как "заставить" пользователя правильно ввести данные в строку? Отправлено: Павел_F. от Февраль 11, 2010, 13:35 Есть QTableView и модель. Есть делегаты на каждую колонку.
Нужно сделать так: 1) Пользователь не может редактировать колонку 1 пока не введет данные в колонку 2 ( уже сделал переопределив edit у QTableView хотя можно и в делегате в createEditor()). 2)Когда пользователь введет данные в колонку два, сразу перейти на колонку 1 и отрыть редактор. 3) Не закрывать редактор и не позволять ничего делать пользователю пока он не введет "правильные" данные в колонку 1. Вот с пунктами 2, 3 проблемы... Весь мозг себе уже сломал, никак по нормальному не выходит. Название: Re: Как "заставить" пользователя правильно ввести данные в строку? Отправлено: asvil от Февраль 11, 2010, 16:56 2. В делегате на колонке два, сделать в нужном месте
emit commitData; emit closeEditor(currentEditor, EditPreviousItem). Нужное место определяется в зависимости от типа редактора используемого в делегате. 3. Плохой, но вариант. Создать делегат с редактором типа "Диалог-М", где М обозначает модальность изобретения. Название: Re: Как "заставить" пользователя правильно ввести данные в строку? Отправлено: Павел_F. от Февраль 11, 2010, 21:27 Со вторым большое спасибо за идею. Правда сделал переопределив closeEditor у QTableView.
А третье остается открытым. Что-то не нравится мне идея, хотя если ничего больше не придумается то так и придется делать. Название: Re: Как "заставить" пользователя правильно ввести данные в строку? Отправлено: SABROG от Февраль 11, 2010, 21:35 Не закрывать редактор и не позволять ничего делать пользователю пока он не введет "правильные" данные в колонку 1. Это глупо. Иногда пользователи не знают что ввести или вообще передумывают что-либо вводить. Правильнее будет выдать MessageBox с сообщением о некорректности введенных данных и предложить две кнопки "ОК", "ОТМЕНА". При ОК возвращаем пользователя в поле редактирования данных, при "ОТМЕНА" затираем данные во второй колонке и закрываем редактирование. Название: Re: Как "заставить" пользователя правильно ввести данные в строку? Отправлено: Павел_F. от Февраль 11, 2010, 22:01 Об этом можно говорить когда сам решаешь что хорошо а что плохо. А когда задание звучит "Нужно сделать так" и не подлежит обсуждению остается только думать как это сделать. Хотя нужная составляющая есть. Как вернуть пользователя к вводу данных? Только вот без каких-либо сообщений.
Название: Re: Как "заставить" пользователя правильно ввести данные в строку? Отправлено: SABROG от Февраль 12, 2010, 10:21 Как вернуть пользователя к вводу данных? Тупо перейти на нужную ячейку средствами вьюхи и вызвать edit(). Твой заказчик садист или садомазохист. Хочу посмотреть на его лицо, когда он введет неверные данные во вторую колонку, а первая его уже никогда не отпустит пока он её не заполнит. |