Название: Редактирование в QTableView Отправлено: Elrock от Сентябрь 10, 2009, 19:44 У меня данные редактируются в классе наследованном от QTableView.
В качестве модели используется наследованный от QStandardItemModel; Никакие виртуальные функции не преопределены, сигналы не перехватываются. Делегат один на всю таблицу. Редактор в делегате универсальный - чтобы можно было редактировать различные типы данных - на подложке унаследованной от QWidget в зависимости от типа данных устанавливаются различные виджеты: Код: UiItemEditor::UiItemEditor(ConfigValue* config, QWidget* parent) : QWidget(parent) Вообше то все работает. Но есть вопросы: 1. Чтобы начать редактирование, нужно двойным кликом создать виджет редакторования в ячейке и еще один клик чтобы начать редактирование. Многовато. Можно сделать меньше? 2. Как приступить к редактированию ячейки нажатием клавиши Enter? Название: Re: Редактирование в QTableView Отправлено: Elrock от Сентябрь 12, 2009, 16:34 Первый вопрос разрешился таким образом при помощи подсказки знающих людей:
UiReferenceWidget::UiReferenceWidget(QWidget* parent) : QTableView(parent) { _model = new UiReferenceModel(); setModel(_model); setSelectionBehavior( QAbstractItemView::SelectRows ); // Добавлено вот это. QAbstractItemView::EditTriggers triggers = editTriggers(); triggers |= QAbstractItemView::CurrentChanged; setEditTriggers(triggers); } Вторая проблемва - как приступить к редактированию ячейки после Enter никак не получается. Название: Re: Редактирование в QTableView Отправлено: Elrock от Сентябрь 13, 2009, 09:07 Проблеме решилась созданием класса, используемого в делегате, который в зависимости от типа данных размешает в виджете parent нужные виджеты для редактирования - QLineEdit, QSpinBox и т.д.
Название: Re: Редактирование в QTableView Отправлено: break от Октябрь 18, 2009, 01:31 При решении первого вопроса у вас получится так что если пользователь будет с клавиатуры бегать по табличке - то она на каждой ячейке будет переходить в режим редактирования. то есть не получится бегать по табличке через клавиши курсора. Мне тоже бы хотелосмь найти корректное решение вопроса...
|