crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QAbstractItemModel и Drag and Drop
poluna
  опции профиля:
сообщение 23.12.2015, 14:00
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.10.2015
Пользователь №: 4458

Спасибо сказали: 1 раз(а)




Репутация:   0  


Привет всем.
Снова я к вам со своими проблемами. :)

Есть два QTreeView, они используют модель производную от QAbstractItemModel.
Проблема в том, что при перетаскивании item'а из одного дерева в другое, появляется разрешающая иконка только в том случае, если этот item навести непосредственно на другой item в дереве.
Если item будет над самим QTreeView, то иконка будет запрещающей.

Все сделано по документации: Использование Drag and Drop с представлениями элементов
У обоих деревьев есть:
self._groupList = QtGui.QTreeView()
self._groupList.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
self._groupList.setDragEnabled(True)
self._groupList.setAcceptDrops(True)
self._groupList.setDropIndicatorShown(True)
В модели переопределены:
def flags(self, index):
        if index.isValid():
            defaultFlags=QtCore.QAbstractItemModel.flags(self, index)
            return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsDragEnabled | QtCore.Qt.ItemIsDropEnabled | defaultFlags
        return None

def supportedDropActions(self):
        return QtCore.Qt.CopyAction | QtCore.Qt.MoveAction


В чем может быть проблема ума не приложу! :(
Должна быть возможность бросать item непосредственно в само окно QTreeView, без наведения на другой item.

Сообщение отредактировал poluna - 23.12.2015, 14:09
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lanz
  опции профиля:
сообщение 25.12.2015, 15:33
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата
Есть эти флаги

Чтото вы меня дурите:
def flags(self, index):
        if index.isValid():
            defaultFlags=QtCore.QAbstractItemModel.flags(self, index)
            return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsDragEnabled | QtCore.Qt.ItemIsDropEnabled | defaultFlags
        return None

Если индекс невалидный(root), код выше вернет None.

Сообщение отредактировал lanz - 25.12.2015, 15:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 5:51