Uploaded image for project: 'Qt for Python'
  1. Qt for Python
  2. PYSIDE-1421

Drag and Drop for QTreeView not Working on Mac OS X

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Not Evaluated Not Evaluated
    • None
    • 5.15.1
    • PySide
    • None
    • Mac OS X Mojave
    • macOS

      I have the following bit of Python code, which sets up a QTreeView with elements that can be dragged and dropped.

       

      On Ubuntu Linux, it works as expected.

       

      On Mac OS X, I'm unable to drag the elements.

       

      
      import sys
      from PySide2 import QtWidgets, QtGui, QtCore
      
      class TreeModel(QtCore.QAbstractItemModel):
          def __init__(self):
              QtCore.QAbstractItemModel.__init__(self)
              self.nodes = ['node0', 'node1', 'node2']    def index(self, row, column, parent):
              return self.createIndex(row, column, self.nodes[row])    def parent(self, index):
              return QtCore.QModelIndex()    def rowCount(self, index):
              if index.internalPointer() in self.nodes:
                  return 0
              return len(self.nodes)    def columnCount(self, index):
              return 1    def data(self, index, role):
              if role == 0:
                  return index.internalPointer()
              else:
                  return None    def supportedDropActions(self):
              return QtCore.Qt.CopyAction | QtCore.Qt.MoveAction            def flags(self, index):
              if not index.isValid():
                  return QtCore.Qt.ItemIsEnabled
              return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | \
                     QtCore.Qt.ItemIsDragEnabled | QtCore.Qt.ItemIsDropEnabled            def mimeTypes(self):
              return ['text/xml']    def mimeData(self, indexes):
              mimedata = QtCore.QMimeData()
              mimedata.setData('text/xml', b'mimeData')
              return mimedata    def dropMimeData(self, data, action, row, column, parent):
              print('dropMimeData %s %s %s %s' % (data.data('text/xml'), action, row, parent))
              return True
      
      class MainForm(QtWidgets.QMainWindow):
          def __init__(self, parent=None):
              super(MainForm, self).__init__(parent)        self.treeModel = TreeModel()        self.view = QtWidgets.QTreeView()
              self.view.setModel(self.treeModel)
              self.view.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)        self.setCentralWidget(self.view)def main():
          app = QtWidgets.QApplication(sys.argv)
          form = MainForm()
          form.show()
          app.exec_()if __name__ == '__main__':
          main()
      

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            crmaurei Cristian Maureira-Fredes
            winstonewert Winston Ewert
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes