我有几个容器的窗口。在它们之间实现拖放操作最简单的方法是什么?如何在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