Advertisement
Guest User

Untitled

a guest
Aug 28th, 2015
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. from PyQt4 import QtCore, QtGui
  2. import sys
  3.  
  4. class GraphicsScene(QtGui.QGraphicsScene):
  5.  
  6. def __init__(self, parent = None):
  7. super(GraphicsScene, self).__init__(parent)
  8.  
  9. def dragEnterEvent(self, event):
  10. event.accept()
  11.  
  12. def dragMoveEvent(self, event):
  13. event.accept()
  14.  
  15. def dragLeaveEvent(self, event):
  16. event.accept()
  17.  
  18. def dropEvent(self, event):
  19. text = QtGui.QGraphicsTextItem(event.mimeData().text())
  20. text.setPos(event.scenePos())
  21. self.addItem(text)
  22. event.accept()
  23.  
  24. class ListView(QtGui.QListView):
  25.  
  26. def __init__(self, parent = None):
  27. super(ListView, self).__init__(parent)
  28. self.setDragEnabled(True)
  29.  
  30. def dragEnterEvent(self, event):
  31. event.setDropAction(QtCore.Qt.MoveAction)
  32. event.accept()
  33.  
  34. def startDrag(self, event):
  35. index = self.indexAt(event.pos())
  36. if not index.isValid():
  37. return
  38.  
  39. selected = self.model().data(index, QtCore.Qt.DisplayRole)
  40.  
  41. mimeData = QtCore.QMimeData()
  42. mimeData.setText(selected.toString())
  43.  
  44. drag = QtGui.QDrag(self)
  45. drag.setMimeData(mimeData)
  46.  
  47. result = drag.start(QtCore.Qt.MoveAction)
  48. if result: # == QtCore.Qt.MoveAction:
  49. pass
  50.  
  51. def mouseMoveEvent(self, event):
  52. self.startDrag(event)
  53.  
  54. class MainWindow(QtGui.QMainWindow):
  55.  
  56. def __init__(self, parent = None):
  57. super(MainWindow, self).__init__(parent)
  58.  
  59. self.setGeometry(100, 100, 400, 400)
  60.  
  61. self.widget = QtGui.QWidget()
  62. self.setCentralWidget(self.widget)
  63. layout = QtGui.QGridLayout(self.widget)
  64.  
  65. self.ListView = ListView()
  66.  
  67. data = QtCore.QStringList()
  68. data << "one" << "two" << "three"
  69. self.model = QtGui.QStringListModel(data)
  70.  
  71. self.ListView.setModel(self.model)
  72.  
  73. self.GraphicsView = QtGui.QGraphicsView()
  74. self.scene = GraphicsScene()
  75. self.GraphicsView.setScene(self.scene)
  76.  
  77. layout.addWidget(self.ListView, 0, 0, 5, 5)
  78. layout.addWidget(self.GraphicsView, 0, 1, 5, 5)
  79.  
  80. self.show()
  81.  
  82. if __name__ == "__main__":
  83. app = QtGui.QApplication(sys.argv)
  84. window = MainWindow()
  85. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement