Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt | Поднять или опустить item в QTreeView [RSS Feed]

#1 Май 5, 2009 16:55:49

avalanche
От:
Зарегистрирован: 2009-03-17
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt | Поднять или опустить item в QTreeView

Вот виджет:


В качестве модели используется экземпляр QAbstractItemModel, который работает с БД

Есть какой-нибудь способ перемещать элементы дерева по вертикали?
Например, пользователь нажимает Ctrl+Up и folder2 распологается над folder1, а если нажмет Ctrl+Down - то folder2 будет находится под folder3.

Представляю как это сделать вручную. Но возможно предусмотрены какие-то методы в самой Qt для этого.



Офлайн

#2 Май 5, 2009 17:29:13

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

PyQt | Поднять или опустить item в QTreeView

Не мешай данные с отображением. Главная модель, которая работает с БД, должна только давать данные. А порядок обрабатывай в QSortFilterProxyModel.
Хинт: Не забывай, что index, который будет возвращать твой view, будет индексом прокси, а не основной модели.



Офлайн

#3 Май 5, 2009 20:07:40

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt | Поднять или опустить item в QTreeView

avalanche А тебя не устроит если твои итемы пользователь будет перемещать мышкой (драг-энд-дропом)? Такое в Qt уже есть, надо только опцию включить соответствующую: view.setDragDropMode(QtGui.QAbstractItemView.InternalMove)

В любом случае надо будет самому учитывать в модели (или в прокси модели, что лучше конечно) изменившийся порядок элементов.



Офлайн

#4 Май 5, 2009 21:12:22

avalanche
От:
Зарегистрирован: 2009-03-17
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt | Поднять или опустить item в QTreeView

Спасибо вам за советы. Получилось реализовать задуманное с применением QSortFilterProxyModel. DragDropMode тоже хорошо.



Офлайн

  • Начало
  • » GUI
  • » PyQt | Поднять или опустить item в QTreeView[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version