Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QPushButton in editor
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
Vilgeforc
Здравствуйте! Написал делегат наследуемый от QStyledItemDelegate. В качестве редактора свой виджет из 2х кнопок и текста. Как определить, в какой строке нажата кнопка?
Litkevich Yuriy
Обрабатывай это в делегате, т.е. сигнал кнопки должен быть связан со слотом делегата, а он уже сможет отправить [самописанный] сигнал располагая данными о том, где он находится
Vilgeforc
Цитата(Litkevich Yuriy @ 19.2.2014, 21:14) *
Обрабатывай это в делегате, т.е. сигнал кнопки должен быть связан со слотом делегата, а он уже сможет отправить [самописанный] сигнал располагая данными о том, где он находится


Спасибо за ответ. А как узнать в делегате, где он находится? Индекс же там обычно в виде параметра передается.
Анна
Ну, так ведь в setEditorData() или createEditor() приходит индекс. Вы ведь наверняка перегружаете эти функции, вот там и сообщите виджету, для какого элемента он вызван.
Vilgeforc
Цитата(Анна @ 21.2.2014, 10:53) *
Ну, так ведь в setEditorData() или createEditor() приходит индекс. Вы ведь наверняка перегружаете эти функции, вот там и сообщите виджету, для какого элемента он вызван.


Дело в том, что редактор открыт у всех ячеек постоянно через listView->openPersistentEditor( myModel.index(i, 0, QModelIndex()) ); А назначение одной из кнопок - удаление элемента. Вот и получается, что если при создании сообщать виджету индекс, то при удалении элемента прийдется вручную пробегать по всем следующим элементам и эти индексы менять. Хотелось избежать такого. Видимо прийдется использовать ключ, связанный с самими данными(
Ну или в ручную отрисовывать. Думал можно это более прямо реализовать.
Анна
Эту проблему можно обойти, получив по индексу QPersistentModelIndex. Этот индекс, насколько я помню, остаётся валидным при удалении предшествующих элементов. Во всяком случае, я именно его использовала для удаления нескольких итемов из модели.
Попробуйте, отпишитесь, если получится.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.