たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

PyQt5: ドラッグ&ドロップ/ drop

dragとdropは別々のものと考えること

 

dropに必要な3要件:

  1.  acceptDrops = True であること
  2.  dragEnterEvent()がオーバーライドされていること
  3.  dropEvent()がオーバーライドされていること

1. acceptDrops = Trueであること

 QWidgetクラスのメンバ変数、初期値はFalse。widgetのdrop可否を決定する変数。

 setAcceptDrops()で変更

 QWidget Class | Qt Widgets 5.5

 

2. dragEnterEvent()がオーバーライドされていること

 dragがwidgetの境界に侵入したとき実行される関数

 QWidgetクラスの仮想関数、なので初期状態では空っぽの状態。これを実装して境界進入時の動作を規定。

 QWidget Class | Qt Widgets 5.5

 

3. dropEvent()がオーバーライドされていること

 dragが離される、つまりdropしたときに実行される関数

 QWidgetクラスの仮想関数、なので初期状態では空っぽの状態。これを実装して境界進入時の動作を規定。

 QWidget Class | Qt Widgets 5.5

 

PyQt5でのDrag and Dropについて詳しく扱っているサイト: This Page Intentionally: Qt's Drag-and-Drop Architecture for Python and PyQt5 Index page

その中でdropに関する章: This Page Intentionally: Qt's Drag-and-Drop Architecture for Python and PyQt5Pt. 2, The Drop Target