Показать редакторы для всех ячеек в строке в QTableView

Я хотел бы отображать редакторы для всех ячеек подряд, когда пользователь начинает редактировать любую ячейку в QTableView. Я сделал несколько попыток, но я не могу добиться правильного поведения.

  • Единственный способ открыть несколько редакторов — это QAbstractItemView::openPersistentEditor() — попытки последовательного вызова QAbstractItemView::edit() приводят к открытию только одного редактора.
  • Я не могу использовать такие сигналы, как clicked() и doubleClicked() из QAbstractItemView, чтобы вызвать редактирование, потому что тогда он не будет учитывать триггеры редактирования представления.
  • Похоже, что нет сигнала "редактирование завершено". Я хотел бы подключить этот сигнал к слоту, который вызывает closePersistentEditor() для ячеек в строке редактирования.

Мы ценим любые предложения.

Спасибо!


person swongu    schedule 21.04.2009    source источник


Ответы (1)


Я ненавижу быть вестником плохих новостей, но я не могу придумать никакого простого способа сделать то, что ты хочешь. Я могу придумать пару вариантов, каждый из которых более болезненный, чем предыдущий:

  • Вы можете создать делегата, который всегда показывает редакторов, и когда пользователь изменяет выбранную строку, установить этот делегат для вновь выбранной строки и исходный делегат для невыбранной строки.
  • Вы можете попробовать наследовать от табличного представления и переопределить поведение для рисования соответствующих элементов для всего в данной строке. Я понятия не имею, насколько это будет сложно, но сомневаюсь, что это будет тривиально.
  • Вы можете создать свой собственный вид для отображения модели. Я никогда этого не делал, и мне не хотелось бы думать обо всем, что потребуется для «полной» поддержки моделей. Однако, чтобы соответствовать одной конкретной модели, вам может сойти с рук это.
person Caleb Huitt - cjhuitt    schedule 21.04.2009