2012-09-12 26 views
0

我有一個QListWidget,我已經將它設置爲接受下降,模式爲DragDrop等,我可以移動QListWidgetItems所有地方(在QListWidget當然)。我想擴展dropEvent()(QListWidget),我應該完全重新實現它嗎?

我喜歡這種行爲,我希望它讓它保持原樣,但我也希望我的QListWidget也接受來自QTreeWidget的丟棄。如果我試圖重新實現QListWidget的dropEvent(),那麼我將失去默認行爲。

是否有任何方法來擴展當前的行爲,以便在listwidget項目之間拖放並從treewidget拖放到listwidget,或者我必須在我的dropEvent()中完全重寫這兩個行爲重新實現?

非常感謝任何答案:)

回答

1

子類QListWidget,重新實現

virtual void QListWidget::dropEvent (QDropEvent * event) 

,並明確調用

QListWidget::dropEvent(event); 

,當您需要的默認行爲。

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

+0

謝謝你們,我該如何區分listwidget和treewidget項目,而他們都將MIME類型返回application/x-qabstractitemmodeldatalist? – hakermania

2

兩種方式:

  1. 實現獨立event filter,並使其在QEvent::Drop行動。原始QListWidget上的Install it。返回虛假以便後來調用原始dropEvent()處理程序。

  2. 繼承自QListWidget,重新執行dropEvent(evt)並作爲最後的聲明,請致電QListWidget::dropEvent(evt);。您的原始行爲將被保留。

+0

謝謝你們,我如何區分listwidget和treewidget項目,而他們都將MIME類型返回application/x-qabstractitemmodeldatalist? – hakermania

+2

QDropEvent-> source() - > inherits(「QTreeWidget」) –

相關問題