Как создать модель / представление QTableView с пользовательскими (не редактируемыми) делегатами? - PullRequest
5 голосов
/ 30 августа 2011

Вот что я пытаюсь получить (это QTableView виджет + MVC на основе QAbstractTableModel с кратным числом делегатов ):

enter image description here

Примечания:

  • Делегаты не работают в качестве редакторов, они ТОЛЬКО зрители!Я не собираюсь редактировать модель с этим табличным представлением.

  • Делегаты должны быть реализованы.Это означает, что вся общая высота СИНЕЙ строки может быть 25px или 250px.

  • MV - простые данные:

    1ROW: CompanyName1 Name1, Name2, Name3 ДРУГИЕ ДАННЫЕ

    2ROW: CompanyName2 SingleName1 ДРУГИЕ ДАННЫЕ

    3ROW: CompanyName3 Name1, Name2 ДРУГИЕ ДАННЫЕ и т. Д. ...

Вопрос:

  • Можно ли создать пользовательский делегат (QItemDelegate или QStyleItemDelegate), например, для 2-го столбца, как на рисунке выше?И если это возможно, возможно, вы могли бы дать мне несколько примеров или ссылки на ресурсы, где я могу их посмотреть.

PS.Да, я просмотрел все Qt Demo примеры с делегатами, но я просто не понимаю, как делать то, что я хочу.

PSS.QTableView -> setIndexWidget() Я думаю, что это не очень хорошая идея.Но QTableView -> setItemDelegateForColumn( myCustomDelegate ) методы лучше!

P3S.Я не ищу решения для QTableWidget класса ...

Спасибо за ваши ответы!: -)


Обновление № 1:

  • Я думаю, что:

    • Делегаты используются только для редактирования (например, если мы работаем с объектом модель / представление) и управляют подобными элементами (все / только столбцы / только строки).

    • Пользовательские виджеты лучше, но я не встречал их в бесплатных проектах Qt.И получить хороший и правильный код таких виджетов не так-то просто ...


Добавление:

1 Ответ

0 голосов
/ 05 октября 2013

Делегаты полезны не только для создания виджетов, используемых при редактировании. Они также используются для создания общего внешнего вида каждого видимого индекса (в данном случае ячейки таблицы).

Вы можете создать внешний вид, заново реализовав метод paint () делегата.

...