Название: Не все понятно с setItemDelegateForRow Отправлено: nik01a от Сентябрь 08, 2010, 19:02 В общем коллеги суть в следующем - на диалоге имеется дерево QTreeWidget:
Код: QTreeWidgetItem *rootItem = new QTreeWidgetItem(treeWidget); затем для элементов item1 - item3 устанавливаю делегат, юзая метод setItemDelegateForRow Код: MyItemDelegate* d = new MyItemDelegate(this); Но по непонятной причине делегат устанавливается только для последней записи в ветке. В чем может быть проблема? Название: Re: Не все понятно с setItemDelegateForRow Отправлено: Kolobok от Сентябрь 08, 2010, 19:13 Убери +2
Название: Re: Не все понятно с setItemDelegateForRow Отправлено: nik01a от Сентябрь 08, 2010, 19:16 +2 здесь нужна для дела, так как я устанавливаю делегаты только для трех последних итемов в иерархии, первые 2 подветви остаются как есть.
Название: Re: Не все понятно с setItemDelegateForRow Отправлено: BRE от Сентябрь 08, 2010, 19:19 А так?
Код
Название: Re: Не все понятно с setItemDelegateForRow Отправлено: nik01a от Сентябрь 08, 2010, 19:22 пробовал - результат тот же. В асистенте по этому поводу инфы кот наплакал.
Название: Re: Не все понятно с setItemDelegateForRow Отправлено: Kolobok от Сентябрь 08, 2010, 19:41 Делегат устанавливается для строки, неважно как глубоко в дереве она находится. Ты пытаешся установить делегата для строк 3-5, хотя их у тебя всего три.
Название: Re: Не все понятно с setItemDelegateForRow Отправлено: nik01a от Сентябрь 08, 2010, 20:14 а узловые строки rootItem и item разве не считаются? -с ними 5 получается
Название: Re: Не все понятно с setItemDelegateForRow Отправлено: nik01a от Сентябрь 08, 2010, 20:19 + а если добавить еще один итем верхнего уровня, а в него напихать подитемов, то как тогда этим строкам задать свой вид делегата? как считать ряды?
Название: Re: Не все понятно с setItemDelegateForRow Отправлено: Kolobok от Сентябрь 08, 2010, 20:21 Посмотри Model Classes в ассистенте. Все станет понятно.
Все, что тебе нужно, можно реализовать в делегате. Название: Re: Не все понятно с setItemDelegateForRow Отправлено: nik01a от Сентябрь 08, 2010, 21:14 почитал... совсем запутался
допутим мы имеем дерево: Код: topLevelItem1 и для строк item1, item2 я хочу задать делегат MyDelegate, юзаю функции setItemDelegateForRow(0, ...) setItemDelegateForRow(1, ...) а теперь для строк anotherItem1 и anotherItem2 я хочу задать другой делегат MyAnotherDelegate получается номер строки у них будет совпадать с номером строк для item1,2 и новый делегат заменит предыдущий, как тогда быть??? Название: Re: Не все понятно с setItemDelegateForRow Отправлено: Kolobok от Сентябрь 08, 2010, 22:13 как тогда быть??? Реализовать все в одном делегате. Можно так: Код: void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const Название: Re: Не все понятно с setItemDelegateForRow Отправлено: nik01a от Сентябрь 08, 2010, 23:09 ну да.. тоже неплохой вариант, спасибо
|