QPushButton in editor |
Здравствуйте, гость ( Вход | Регистрация )
QPushButton in editor |
Vilgeforc |
19.2.2014, 16:39
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 19.2.2014 Пользователь №: 4060 Спасибо сказали: 3 раз(а) Репутация: 0 |
Здравствуйте! Написал делегат наследуемый от QStyledItemDelegate. В качестве редактора свой виджет из 2х кнопок и текста. Как определить, в какой строке нажата кнопка?
|
|
|
Litkevich Yuriy |
19.2.2014, 20:14
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Обрабатывай это в делегате, т.е. сигнал кнопки должен быть связан со слотом делегата, а он уже сможет отправить [самописанный] сигнал располагая данными о том, где он находится
|
|
|
Vilgeforc |
19.2.2014, 20:34
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 19.2.2014 Пользователь №: 4060 Спасибо сказали: 3 раз(а) Репутация: 0 |
Обрабатывай это в делегате, т.е. сигнал кнопки должен быть связан со слотом делегата, а он уже сможет отправить [самописанный] сигнал располагая данными о том, где он находится Спасибо за ответ. А как узнать в делегате, где он находится? Индекс же там обычно в виде параметра передается. |
|
|
Анна |
21.2.2014, 9:53
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
Ну, так ведь в setEditorData() или createEditor() приходит индекс. Вы ведь наверняка перегружаете эти функции, вот там и сообщите виджету, для какого элемента он вызван.
|
|
|
Vilgeforc |
21.2.2014, 10:38
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 19.2.2014 Пользователь №: 4060 Спасибо сказали: 3 раз(а) Репутация: 0 |
Ну, так ведь в setEditorData() или createEditor() приходит индекс. Вы ведь наверняка перегружаете эти функции, вот там и сообщите виджету, для какого элемента он вызван. Дело в том, что редактор открыт у всех ячеек постоянно через listView->openPersistentEditor( myModel.index(i, 0, QModelIndex()) ); А назначение одной из кнопок - удаление элемента. Вот и получается, что если при создании сообщать виджету индекс, то при удалении элемента прийдется вручную пробегать по всем следующим элементам и эти индексы менять. Хотелось избежать такого. Видимо прийдется использовать ключ, связанный с самими данными( Ну или в ручную отрисовывать. Думал можно это более прямо реализовать. |
|
|
Анна |
24.2.2014, 11:39
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
Эту проблему можно обойти, получив по индексу QPersistentModelIndex. Этот индекс, насколько я помню, остаётся валидным при удалении предшествующих элементов. Во всяком случае, я именно его использовала для удаления нескольких итемов из модели.
Попробуйте, отпишитесь, если получится. Сообщение отредактировал Анна - 24.2.2014, 11:42 |
|
|
Текстовая версия | Сейчас: 24.4.2024, 4:59 |