我有幾個容器的窗口。在它們之間實現拖放操作最簡單的方法是什麼?如何在qt中實現拖放小部件到另一個容器?
2
A
回答
2
您必須使用QDrag*
對象。 然後重新實現:
virtual void mousePressEvent(QMouseEvent * event);
virtual void mouseReleaseEvent(QMouseEvent * event);
virtual void mouseMoveEvent(QMouseEvent *event);
(拖動開始的地方),你會管理的起點(在那裏你放下小部件)的事件和結束點內。您還將使用MIME協議來允許框架管理拖放操作。
上拖放一個更有用的文章是這樣的:Drag 'n drop
0
我想最簡單的方法是創建eventFilter
類,在該類中將拖放事件和install它(someWidget->installEventFilter
)過濾到您想要拖放的所有小部件。從文檔實例 - here
更新:
與eventfilter的事情是,你並不需要繼承所有小組件讓他們有拖放。只需在你想要過濾的任何小部件上安裝過濾器,它就會擁有它。
至於過濾器本身,它並不總是阻止事件等(它會這樣做,如果這是你的意圖)。這僅僅是人們如何使用它的例子。
只是拖放的無數選項之一:在dropEvent,dragMoveEvent,dragEnterEvent您的過濾器將可能記住指向你想要放棄的指針,並在dropEvent與對象發出信號,該事件持有指針並抓住它小部件放在哪裏,就是這樣,任何安裝了過濾器的小部件都會有拖放。
事件過濾器的全部重點不在於繼承和連接每個單獨的小部件,如果您有公共事件類型,您希望以類似的方式捕獲和處理,例如拖放事件。
我認爲你知道如何拖放,但是認爲用相同的代碼重寫所有小部件的重寫事件可能是不對的。所以我向你展示瞭如何使用一個eventfilter輕鬆完成所有想要拖放的小部件。
相關問題
- 1. 如何實現在ListView中拖放到另一個ListView?
- 2. 如何從另一個窗口小部件拖放到QGraphicsScene
- 3. 如何在QT中的另一個小部件內部部件?
- 4. Qt 4.x:如何實現拖放到桌面或文件夾?
- 5. 在Qt樹部件中發現的粘滯拖放QT錯誤
- 6. 如何使用角度js實現拖放小部件?
- 7. 實現從一個JPanel到另一個JPanel的拖放
- 8. 如何在QT中的另一個小部件中繪製小部件的內容?
- 9. 如何實現一個小部件?
- 10. 如何實現從一個JTree到另一個JTree的智能拖放?
- 11. Android拖放一個小部件
- 12. 如何通知小部件有關Qt中另一個小部件的更改?
- 13. 如何將div拖放到另一個
- 14. raphael將物體從一個容器拖放到另一個容器
- 15. 拖放小部件
- 16. 如何在Qt中將另一個控件放在另一個控件上
- 17. Qt我可以從小部件拖放到Qwebkit嗎?
- 18. 如何獲取可拖動內部拖放事件的容器?
- 19. 如何實現從qt應用程序拖放到文件系統文件夾?
- 20. 如何在android中實現拖放?
- 21. 如何在android 2.2中實現拖放?
- 22. 如何在Angular2中實現拖放?
- 23. 將圖像從容器拖放到另一個 - Flex
- 24. 如何實現拖放gui?
- 25. 如何拖放自定義小部件?
- 26. 如何實現拖放到畫布上?
- 27. 如何在小部件中實現AUDIO_SERVICE
- 28. 在ExtJS 4中拖放小部件4
- 29. 使用EXTJS將組件拖放到同一個容器中4
- 30. 在wp8.1中實現拖放
從我可以從你的鏈接瞭解,eventFilter是可以阻止事件或將其轉發到該對象的類。我不需要那個。我可以連接信號和插槽和/或子類小部件並覆蓋方法。問題是我必須連接/重寫/等,使其工作,並有一些標準,測試和方便的方式做到這一點。 – alkedr
@alkedr好的,我已經更新了eventfilter背後的原因 – Shf