crossplatform.ru

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


  Ответ в QTreeView, Drag and Drop
Введите ваше имя
Подтвердите код

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

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
lanz Дата 15.1.2016, 17:51
  Что то вроде:
rows = set()
for index in indexes:
  if index.isValid():
    rows.add(index.row)

for row in rows:
  // write row to stream

poluna Дата 15.1.2016, 16:55
  Что-то не подумав кинула код! :D
def mimeData(self, indexes):
        mimeData=QtCore.QMimeData()
        encodedData=QtCore.QByteArray()

        stream=QtCore.QDataStream(encodedData, QtCore.QIODevice.WriteOnly)
        for index in indexes:
            if index.isValid():
                text=self.data(index, QtCore.Qt.DisplayRole)
                stream.writeQVariant(text)
        mimeData.setData("application/draganddropdata.text.list", encodedData)
        return mimeData


Так вот: количество indexes, которые приходят в mimeData ровно столько, сколько видимых столбцов. :(
lanz Дата 15.1.2016, 14:28
  Тут надо смотреть код, который формирует data.
Это обычно метод mimeData у модели.
Поскольку этот метод не(должен)быть связан с видом, то и скрытие столбцов в QTreeView никак не может на него повлиять.
Код mimeData в студию! :lol:
poluna Дата 15.1.2016, 14:11
  Всем привет.
В моем классе модели (производной от QStandardItemModel), есть такой код:
def dropMimeData(self, data, action, row, column, parent):
        if action == QtCore.Qt.IgnoreAction:
            return True
        if not data.hasFormat("application/draganddropdata.text.list"):
            return False

        encodedData = data.data("application/draganddropdata.text.list")
        stream = QtCore.QDataStream(encodedData, QtCore.QIODevice.ReadOnly)

        items = []
        while not stream.atEnd():
            text = stream.readQVariant().toString().toUtf8()
            items.append(str(text))
        if len(items) > 0:
            self.emit(QtCore.SIGNAL('treeDropData'), items)

        return True
Данный код работает.

Проблема в том, что если я скрываю столбцы у QTreeView, то в items данные из скрытых столбцов не попадают, а хотелось бы!
Как получать все столбцы, даже скрытые в dropMimeData из data?

Столбцы скрываю так: tree.hideColumn(n)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 18:46