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

问题描述 投票:0回答:2

[我有一个QListWidget,我将它设置为接受放置,模式为DragDrop等,我可以在所有位置(当然在QListWidget内)移动QListWidgetItems。

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

是否有任何方法可以扩展当前行为,以便同时在listwidget项之间拖放以及从treewidget到listwidget拖放,或者我必须在我的dropEvent()重新实现中完全重写这两种行为?

非常感谢您的回答:)

qt drag-and-drop implementation qlistwidget
2个回答
1
投票

编号

子类QListWidget,重新实现

virtual void    QListWidget::dropEvent ( QDropEvent * event )

并明确呼叫

QListWidget::dropEvent(event);

只要您需要默认行为。

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


2
投票

两种方法:

  1. 实现独立的event filter,并使其作用于QEvent::Drop。原始QListWidget上的Install it。返回false,以便随后调用原始的dropEvent()处理程序。

  2. 继承自QListWidget,重新实现dropEvent(evt),最后,调用QListWidget::dropEvent(evt);。您的原始行为将保留。

© www.soinside.com 2019 - 2024. All rights reserved.