Название: Переход в режим редактирования по одиночному нажатию баз выделения ячейки Отправлено: igor_bogomolov от Декабрь 14, 2009, 01:57 Приветствую всех.
Имею QTableView + QStandardItenModel + QAbstractItemDelegate. В каждой из ячеек в таблице должен находиться некий виджет. Строк у меня много, поэтому использовать QAbstractItemView::setIndexWidget слишком накладно. Cоздал набор делегатов, которые имитируют поведение этих виджетов. Все вреде хорошо, за исключением маленькой мелочи. Для делегата имитирующего QLineEdit нужно одиночным нажатием переходить в режим редактирования. Для этого выставляю следующие флаги. Код После выхода из режима редактирования , что бы снова в него войти (для той же самой ячейки), необходим DoubleClicked. Как то это не кашерно. Если закомментировать setSelectionMode, поведение правилное, но при этом ячейка закрашивается фоном выделения. Как сделать постоянный переход в редактирование одиночным нажатием и чтобы при этом в таблице ячейка не выделялась? (http://pic.ipicture.ru/uploads/091214/NAACRUAXbX.png) Название: Re: Переход в режим редактирования по одиночному нажатию баз выделения ячейки Отправлено: break от Декабрь 14, 2009, 11:43 Посмотри внимательно вот эту тему http://www.prog.org.ru/topic_10428_0.html
там последним сообщением автор Barmaglodd приводит пример делегата внутри которого не создается createEditor и он работает по одинарному клику - я точно не понял подойдет ли тебе но по идее это оно! Название: Re: Переход в режим редактирования по одиночному нажатию баз выделения ячейки Отправлено: igor_bogomolov от Декабрь 14, 2009, 13:15 Посмотри внимательно вот эту тему http://www.prog.org.ru/topic_10428_0.html там последним сообщением автор Barmaglodd приводит пример делегата внутри которого не создается createEditor и он работает по одинарному клику - я точно не понял подойдет ли тебе но по идее это оно! Я видел эту тему и пример о котором вы говорите. Для делегатов имитирующих QCheckBox и QPushButton не нужен режим редактирования. Для их реализации достаточно перекрыть QAbstractItemDelegate::paint и QAbstractItemDelegate::editorEvent . Для имитации LineEdit-а необходимо переходить в режим редактирования. Тут то и начинаются проблемы... Но на самом деле проблему я уже решил. Изначально просто зациклился и пытался решить проблему именно через делегат. К сожалению, если сохранять поведение MouseOver, или требуется поведение как я описал в первом посте, одним делегатом не обойтись. Пришлось делать свое отображение. Перекрыл mousePressEvent, и вызываю для требуемой ячейки openPersistentEditor. В делегате, когда это необходимо, добираюсь до отображения и делаю closePersistentEditor. Костыль конечно, но другого решения я не вижу. Если есть более правильное решения, буду очень рад услышать :) Название: Re: Переход в режим редактирования по одиночному нажатию баз выделения ячейки Отправлено: Kolobok от Декабрь 17, 2009, 20:11 ... и чтобы при этом в таблице ячейка не выделялась? может QPalette::Highlight прозрачной сделать. |