2013-05-02 2 views
0

Теперь система делегатов мне не понятна.Qt QListView с разными делегатами за столбец

У меня есть QListView, правильно отображающий мою пользовательскую модель.

Моя модель состоит из следующих столбцов:

  • Колонка 1, 2 и 3 представляют собой текст столбца, текст элемента столбца заполняется с помощью QAbstractItem::setText();

  • колонке 4, 5, 6 и 7 - QVariant пользовательского класса. Эти колонки имеют элементы заполнены QAbstractItem::setData(QVariant::fromValue(MyCustomClass());

Что мне нужно от QListView это для отображения текста на колонке 1,2 и 3, а также отображать пользовательский QString, полученный методом MyCustomClass на clumns 4, 5,6 и 7.

Как я могу это достичь?

ответ

2

QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelegate* delegate), docs.

У вас есть пользовательская модель? Если все, что вы вытаскиваете из своих пользовательских данных, является текстом, было бы проще переопределить QAbstractItemModel::data(const QModelIndex& index, int role) const, запросить, какой столбец index есть, и если это ваш пользовательский столбец данных, возвращайте роль отображения с текстом пользовательских данных; иначе просто вызовите родительскую реализацию.

+0

Отличная идея для переопределения метода данных. Благодаря!! –

Смежные вопросы