0

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

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

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

非常感谢任何答案:)

4

2 回答 2

2

两种方式:

  1. 实现一个独立的事件过滤器并使其作用于QEvent::Drop. 将它安装在您原来的 QListWidget 上。返回false以便dropEvent()之后调用原始处理程序。

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

于 2012-09-12T13:08:39.943 回答
1

不。

子类QListWidget,重新实现

virtual void    QListWidget::dropEvent ( QDropEvent * event )

并明确调用

QListWidget::dropEvent(event);

每当您需要默认行为时。

如何从派生类函数调用父类函数?

于 2012-09-12T13:03:09.753 回答