Russian Qt Forum

Qt => Общие вопросы => Тема начата: Гурман от Июнь 06, 2010, 18:08



Название: делегат для одной ячейки таблицы - это возможно?
Отправлено: Гурман от Июнь 06, 2010, 18:08
нужно, чтобы в одной колонке были в разных ячейках разные значения, в одних спин-боксы с выбираемым значением из диапазона, в других просто значения, причем не редактируемые, устанавливаются только программно

не вижу возможности установить делегата для отдельной ячейки, вижу только на таблицу, строку или колонку - ткните носом, плз, если такое есть


Название: Re: делегат для одной ячейки таблицы - это возможно?
Отправлено: lit-uriy от Июнь 06, 2010, 18:10
>>не вижу возможности установить делегата для отдельной ячейки
нет такой возможности.
Только с делегатом мудрить, чтобы он поддерживал разные варианты. А варианты засовывать в модель в UserRole.

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

Сложно сказать, что будет менее геморройным.


Название: Re: делегат для одной ячейки таблицы - это возможно?
Отправлено: Kolobok от Июнь 06, 2010, 18:43
QAbstractItemModel::flags ( const QModelIndex & index )


Название: Re: делегат для одной ячейки таблицы - это возможно?
Отправлено: Гурман от Июнь 06, 2010, 19:14
QAbstractItemModel::flags ( const QModelIndex & index )

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

например, в колонке отображаются данные разных типов: целое, логическое, вещественное - для целых удобно спином или редактированием менять значение, для вещественных надо иметь возможность редактирования, или выбора из предопределенных символьных эквивалентов (PI, E, PI/2 и тд), для логических только выбор из списка ИСТИНА или ЛОЖЬ

ну или какой-нибудь более сложный случай

странно, что нет вызова setItemDelegateForCell ( int row, int column, QAbstractItemDelegate * )

придется наверно в моем случае "с делегатом мудрить", так похоже проще всего получится


Название: Re: делегат для одной ячейки таблицы - это возможно?
Отправлено: Kolobok от Июнь 06, 2010, 19:52
Использование setItemDelegate... не важно какого, подразумевает, что делегата в любом случае писать придется. :)


Название: Re: делегат для одной ячейки таблицы - это возможно?
Отправлено: Гурман от Июнь 06, 2010, 20:59
разумеется, но фишка не в этом - сейчас придется реализовать класс, который поддерживает все возможные на сейчас варианты, а если новые добавятся, то придется этот класс переписывать

если бы можно было разные классы в столбец делегировать, то переписывать ничего не надо, можно было бы готовые добавить в библиотеку, и потом только добавлять новые