我想扩展dropEvent()(QListWidget),我应该完全重新实现吗?

时间:2012-09-12 12:44:53

标签: qt drag-and-drop implementation qlistwidget

我有一个QListWidget,我已将其设置为接受drop,模式为DragDrop等,我可以在所有地方移动QListWidgetItems(当然在QListWidget内)。

我喜欢这种行为,我希望它按原样使用,但我也希望我的QListWidget也接受来自QTreeWidget的丢弃。如果我尝试重新实现我的QListWidget的dropEvent(),那么我将失去默认行为。

有没有办法只扩展当前的行为,以便在listwidget项之间拖放和从treewidget拖放到listwidget,或者我必须在我的dropEvent()重新实现中完全重写这两个行为?

非常感谢您的回答:)

2 个答案:

答案 0 :(得分:2)

两种方式:

  1. 实施一个独立的event filter并使其对QEvent::Drop采取行动。原始QListWidget上的Install it。返回 false ,以便之后调用原始dropEvent()处理程序。

  2. 继承自QListWidget,重新实施dropEvent(evt),并作为最后一项陈述,致电QListWidget::dropEvent(evt);。您的原始行为将被保留。

答案 1 :(得分:1)

没有

子类QListWidget,重新实现

virtual void    QListWidget::dropEvent ( QDropEvent * event )

并明确调用

QListWidget::dropEvent(event);

只要您需要默认行为。

How to call a parent class function from derived class function?