Название: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: m_ax от Октябрь 27, 2008, 23:23 Привет всем!
Любопытная вещь получается: когда я создаю свою модель, унаследованную от QAbstractTableModel, а затем записываю её в QTreeView и вызываю метод setEditTriggers(QAbstractItemView::NoEditTriggers): Код: QAbstractTableModel *myModel = new QAbstractTableModel(this); column == 0 item 0 item 1 item 2 <-- щёлкаем мышкой на этом итеме (для примера) и под ним разворачивается вся колонка : ( +item0 +item1 +item2 +item3 +item4 item3 item4 Никто не знает в чём дело? И как с этим бороться? Заранее спасибо. Название: Re: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: ритт от Октябрь 28, 2008, 00:23 QAbstractTableModel не поддерживает родительско-дочерние связи между индексами.
какой эффект ожидается в данном случае? Название: Re: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: m_ax от Октябрь 28, 2008, 00:35 QAbstractTableModel не поддерживает родительско-дочерние связи между индексами. какой эффект ожидается в данном случае? В том то всё и дело, что никакого эфекта и не нужно. Эта модель отображается в большенстве случаях с помощью QTableView и никаких проблем нет, но в одном месте её (модель) нужно отобразить с помощью QTreeView, причём беc возможности редактирования (NoEditTriggers) и в этом случае происходит такая неприятность. Вот, как то так... :-\ Название: Re: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: Alex03 от Октябрь 28, 2008, 06:29 Зачем отображать TableModel в QTreeView? Или Вы уверены что Вам нужна именно TableModel ?
Название: Re: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: m_ax от Октябрь 28, 2008, 10:27 Зачем отображать TableModel в QTreeView? Или Вы уверены что Вам нужна именно TableModel ? Зачем? Может быть и незачем, но мне уже просто интересно отчего так происходит и как с этим бороться... ??? Название: Re: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: Tonal от Октябрь 28, 2008, 11:13 Всё довольно просто: в TableModel игнорируется параметр parent в функции index, ну и в остальных соответственно не проверяется index.parent.
Поэтому, когда QTreeView пытается узнать сколько же детей у конкретного итема, ему возвращается количество строк, и т.д. А для того, чтобы итем редактировать не могли нужно, по идее, из флага убирать ItemIsEditable. Название: Re: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: m_ax от Октябрь 28, 2008, 11:45 Всё довольно просто: в TableModel игнорируется параметр parent в функции index, ну и в остальных соответственно не проверяется index.parent. Поэтому, когда QTreeView пытается узнать сколько же детей у конкретного итема, ему возвращается количество строк, и т.д. А для того, чтобы итем редактировать не могли нужно, по идее, из флага убирать ItemIsEditable. В смысле index(...) и parent(...) реализованны так: Код: QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) cons так что ли? Кстати, если из флага убрать ItemIsEditable то такая же фигня получается... Спасибо. :P Название: Re: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: ритт от Октябрь 28, 2008, 11:59 если есть какие-то весомые причины на использование табличной модели в связке с тривью, думаю, проще будет из табличной модели сделать некий "гибрид", где будет учитываться парент для индекса и при запросе будут возвращаться соответствующие данные-заглушки (0 для rowCount(parent) и т.п.)
возможно, имеет смысл отписаться по этому поводу Троллям - пусть бы сами заглушили...ну, или хотя бы описали подобное поведение в документации... Название: Re: [4.2.2] QTreeView + наследник от QAbstractTableModel Отправлено: Tonal от Октябрь 28, 2008, 21:02 Код: QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) cons |