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

Details

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

    Description

      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()
      

      Attachments

        Issue Links

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

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes