Я использую Python 3.4.3 и PyQt 5.4.2 и имею некоторые проблемы при попытке получить данные из строкиInserted signal.Не удается получить данные из rowsInserted signal
Я хочу получить данные из всех элементов, находящихся рядом с отброшенным элементом после операции сброса.
Вот некоторые из моего кода (весь класс модель слишком большой, надеюсь, что эта часть достаточно):
class PlModel(QtGui.QStandardItemModel):
def __init__(self):
self.rowsInserted.connect(self.printSomeData)
def supportedDragActions(self):
return QtCore.Qt.MoveAction
def supportedDropActions(self):
return QtCore.Qt.CopyAction | QtCore.Qt.MoveAction
def canDropMimeData(self, QMimeData, Qt_DropAction, p_int, p_int_1, QModelIndex):
if not self.itemFromIndex(QModelIndex) and p_int_1 == p_int == -1:
return False
elif QModelIndex.isValid():
if self.item(self.itemFromIndex(QModelIndex).row(), 0) is None:
return False
else:
return QtGui.QStandardItemModel.canDropMimeData(self, QMimeData, Qt_DropAction, p_int, p_int_1, QModelIndex)
else:
return QtGui.QStandardItemModel.canDropMimeData(self, QMimeData, Qt_DropAction, p_int, p_int_1, QModelIndex)
def dropMimeData(self, mimedata, dropaction, row, col, modelindex):
if not self.itemFromIndex(modelindex):
if row == col == -1:
return False
else:
return QtGui.QStandardItemModel.dropMimeData(self, mimedata, dropaction, row, 0, self.index(row, 0))
elif self.itemFromIndex(modelindex).isDragEnabled():
if row == col == -1:
crow = self.item(modelindex.row(), 0).rowCount()
return QtGui.QStandardItemModel.dropMimeData(self, mimedata, dropaction, crow, 0, self.indexFromItem(self.item(modelindex.row(), 0)))
else:
return QtGui.QStandardItemModel.dropMimeData(self, mimedata, dropaction, row, 0, modelindex)
elif self.itemFromIndex(modelindex).isDropEnabled():
if col != -1:
return False
else:
return QtGui.QStandardItemModel.dropMimeData(self, mimedata, dropaction, row, 0, modelindex)
else:
return QtGui.QStandardItemModel.dropMimeData(self, mimedata, dropaction, row, 0, modelindex)
def printSomeData(self, ind: QtCore.QModelIndex, first, last):
row = ind.row()
item = self.itemFromIndex(ind)
for i in range(0, item.rowCount()):
print(self.index(i, 0, ind).data(QtCore.Qt.DisplayRole))
Этот код печатает достоверные данные по всем пунктам, за исключением пункта упал. Для сброшенного объекта он выводит «Нет». После сброса в QTreeView все данные в порядке. Что с этим не так?
Извините за мой плохой английский.
Как операцию работы падение? Это помогло бы иметь [MCVE] (http://stackoverflow.com/help/mcve). – Mel
@tmoreau Я пытался расширить свой пример кода. К сожалению, класс модели слишком велик и зависит от некоторых других частей моей программы. – lermont