在PyQt中的列表视图中创建可拖动图标

时间:2012-12-28 06:34:27

标签: python qt pyqt

我正在开发一个PyQt程序,我希望能够在各种“工具栏”中包含一些对象,比如形状。我希望用户能够从工具栏中单击并拖动其中一个形状的实例到主画布(QGraphicsView)。

对于工具栏,我正在考虑使用QListView,我可以使用QAbstractListModel填充它。但是,我不知道如何让QListView只保存我想要的形状的图标......其次,我如何使对象图标可以拖动到我的主画布上。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果这个问题包含一些具有现有方向的特定代码示例,我可以更具体地进行评论,但这里只是一些一般性观点:

  • 您的QListView数据不需要特别涉及拖放问题,因此您可以随意填充它:QListWidget,QListView + model,.. /
  • 重要的方面是在QListX小部件上设置拖动方法,以在QMimeData中设置适当的QDrag。这是将数据传输到放置站点的重要部分。你可以让它发送一个图像,或者某些数据引用,接收者可以使用它们。
  • 在图形视图上设置放置事件以接收和检查mime类型。让我们说你只是发送图像。您可以接收它并将pixmap项添加到场景中。或者您可能正在向字典发送一些内部引用,如id。它可以被查找,数据可以以你想要的形式添加到场景中。

请参阅一般Qt Drag and Drop docs。它们几乎就是你想要的。