Advertisement
Guest User

Untitled

a guest
Sep 19th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.52 KB | None | 0 0
  1. from PySide import QtCore, QtGui
  2.  
  3.  
  4. class MyItem(QtGui.QStandardItem):
  5.     '''This is the item I'd like to drop into the view'''
  6.    
  7.     def __init__(self, parent=None):
  8.         super(MyItem, self).__init__(parent)
  9.  
  10. class ReceivingView(QtGui.QListView):
  11.     '''Custom view to show the problem - i.e. the dropEvent produces a QStandardItem rather than MyItem'''
  12.    
  13.     def __init__(self, parent=None):
  14.         super(ReceivingView, self).__init__(parent)
  15.        
  16.     def dropEvent(self, event):
  17.         # let the default behaviour do it's thing:
  18.         super(ReceivingView, self).dropEvent(event)
  19.  
  20.         # now show received item is QStandardItem, not the sent custom item
  21.         item = self.model().item(self.model().rowCount() - 1)
  22.         print item
  23.  
  24. if __name__ == "__main__":
  25.     import sys
  26.  
  27.     app = QtGui.QApplication(sys.argv)
  28.  
  29.     mw = QtGui.QMainWindow()
  30.     w = QtGui.QSplitter()
  31.     mw.setCentralWidget(w)
  32.  
  33.     # models
  34.     model1 = QtGui.QStandardItemModel()
  35.     model2 = QtGui.QStandardItemModel()
  36.  
  37.     for i in xrange(20):
  38.         #item = QtGui.QStandardItem()
  39.         item = MyItem()
  40.         item.setData(str(i), QtCore.Qt.DisplayRole)
  41.         model1.appendRow(item)
  42.  
  43.     # views
  44.     view1 = QtGui.QListView()
  45.     view2 = ReceivingView()
  46.     for v in (view1, view2):
  47.         v.setViewMode(QtGui.QListView.IconMode)
  48.    
  49.     view1.setModel(model1)
  50.     view2.setModel(model2)
  51.  
  52.     w.addWidget(view1)
  53.     w.addWidget(view2)
  54.  
  55.     mw.show()
  56.     mw.raise_()
  57.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement