2012-12-28 90 views
0

我正在開發一個PyQt程序,我希望能夠在各種「工具欄」中擁有一些對象,比如形狀。我希望用戶能夠從工具欄中點擊並拖動這些形狀之一的實例到主畫布(QGraphicsView)。在PyQt中在列表視圖中創建可拖動圖標

對於我正在考慮使用QListView的工具欄,我可以使用QAbstractListModel填充它。然而,我不知道如何讓QListView僅保留我想要的形狀的圖標......其次,我如何使對象圖標可拖動到我的主畫布上。有任何想法嗎?

+0

這是一個非常廣泛的問題(可能有兩個問題)。你看過[Drag and Drop](http://doc.qt.digia.com/qt/dnd.html)文檔嗎? – jdi

回答

1

如果這個問題包含與現有的方向的一些具體代碼示例,我可以發表意見更具體,但這裏只是一些基本點:

  • 你而QListView數據並不需要專門涉及到阻力和因此您可以根據需要填充它:QListWidget,QListView + model,../
  • 重要的是爲您的QListX小部件設置拖動方法,以在QDrag中設置合適的QMimeData。這是將數據傳輸到丟棄站點的重要部分。你可以讓它發送一個圖像,或一些數據的引用,接收者可以使用它。
  • 在圖形視圖上設置放置事件以接收並檢查MIME類型。可以說你只是發送一個圖像。您可以接收它並將一個像素圖項目添加到您的場景中。或者,也許你正在發送一些內部參考文件,如id。它可以被查找,數據可以以您想要的形式添加到場景中。

參照一般Qt Drag and Drop docs。他們幾乎是你想要的。