Questions: QstandardItemModel and moveRow

Gottfried Müller <[email protected]>
Newsgroups gmane.comp.python.pyqt-pykde
Message-ID <[email protected]>
Hi,

a bigger barrier for me again. I want to move one item in a 
QStandardItemModel. I have no idea why my example does not work. I want 
to move item "5" as a child of item "1" and at the end if the children. 
But nothing happens. Why? And can I find any messages about the reason. 
And how I can move an item "6" for example as a sibling of items "0" and 
"4". What is there the parent?

Gottfried

Here my example:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# pylint: disable=missing-docstring

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QTreeView, 
QVBoxLayout, QPushButton
from PyQt5.QtGui import QStandardItemModel, QStandardItem


class ApplWindow(QWidget):

     def __init__(self, parent=None):
         super().__init__(parent)
         btn = QPushButton("Start move", parent=self)
         self.mdl = QStandardItemModel(parent=self)
         self.tree = QTreeView(parent=self)
         self.tree.setModel(self.mdl)
         self.tree.setHeaderHidden(True)
         layout = QVBoxLayout()
         layout.addWidget(btn)
         layout.addWidget(self.tree)
         self.setLayout(layout)
         self.items = [QStandardItem(str(idx)) for idx in range(7)]
         self.items[1].appendRow(self.items[2])
         self.items[1].appendRow(self.items[3])
         self.items[0].appendRow(self.items[1])
         self.mdl.appendRow(self.items[0])
         self.items[4].appendRow(self.items[5])
         self.items[4].appendRow(self.items[6])
         self.mdl.appendRow(self.items[4])
         self.tree.expandToDepth(1)
         btn.pressed.connect(self.startMove)

     def startMove(self):
         srcItem = self.items[5]
         dstParent = self.items[1]
         print('mv_01: item={} -> parent={}'.format(srcItem.text(), 
dstParent.text()))
         srcParentIdx = self.mdl.indexFromItem(srcItem.parent())
         dstParentIdx = self.mdl.indexFromItem(dstParent)
         print('idxValid_01:', srcParentIdx.isValid(), 
dstParentIdx.isValid())
         print('rows_01:', srcItem.row(), dstParent.rowCount())
         rc = self.mdl.moveRow(
             srcParentIdx, srcItem.row(), dstParentIdx, dstParent.rowCount()
         )
         print('rc_01:', rc)


def main():
     appl = QApplication(sys.argv)
     applWindow = ApplWindow()
     applWindow.show()
     return appl.exec_()


if __name__ == "__main__":
     main()

_______________________________________________
PyQt mailing list    [email protected]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.