0

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

对于工具栏,我正在考虑使用可以使用 QAbstractListModel 填充的 QListView。但是,我不确定如何使 QListView 仅包含我想要的形状的图标......其次,如何使对象图标可拖动到我的主画布上。有任何想法吗?

4

1 回答 1

1

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

  • 您的 QListView 数据不需要专门与拖放问题相关,因此您可以根据需要填充它:QListWidget、QListView + 模型、../
  • 重要的方面是在 QListX 小部件上设置拖动方法以在 QDrag 中设置适当QMimeData。这是将数据传输到放置站点的重要部分。您可以让它发送图像,或对某些数据的引用,接收者可以利用这些数据。
  • 在图形视图上设置放置事件以接收和检查 mime 类型。假设您只是发送图像。您可以接收它并将像素图项添加到您的场景中。或者,也许您正在向字典发送一些内部引用,例如 id。可以查到,数据可以以你想要的形式添加到场景中。

请参阅一般的Qt 拖放文档。它们几乎就是你想要的。

于 2012-12-28T06:50:44.097 回答