2012-02-12 28 views
1

私はこれを実現する可能性についてウェブを検索しましたが、解決策は見つかりませんでした。受信していない領域、またはアプリケーションのウィンドウ外にドロップされた項目をリストから削除する簡単な方法はありますか?QListWidgetから項目をウィジェットの外にドロップすることでその項目を削除しますか?

これまでのところ、私はショートカットによって項目を削除するための削除キー受け入れる:

QShortcut *shortcut = new QShortcut(QKeySequence(Qt::Key_Delete), myList); 
shortcut->setContext(Qt::WidgetShortcut); 
connect(shortcut, SIGNAL(activated()), this, SLOT(deleteSelection())); 

をしかし、私はドラッグ&ドロップでリストに項目を追加するので、私はそれらを削除できるようにしたいと思います同じように。リスト内の項目はドラッグアンドドロップで注文することもできます。

ヒントやリンクがありがとうございます。

+0

dropEventの代わりにdragLeaveEventを削除してください。 –

+0

@ KamilKlimekそうするためには、ウィジェットをサブクラス化しなければならないと思いますか?他の方法はありませんか?私はそれがQListWidgetから欲しがるのはかなり標準的だと思ったでしょう。 – steps

+1

イベントフィルタをインストールしてdropEventをキャッチしようとしました –

答えて

1

これは私のために働くようだ:

  • ドラッグアンドドロップアクションがQt::MoveAction
  • QListWidget(例えば、QDialog)の親を確認する必要があり、次があります。
    • dragEnterEvent()実装済み
    • dropEvent()実装済み(ここではMIMEデータを無視)
    • dropEvent()においてMIMEデータを無視

アイテム削除操作と等価であるべきです。

幸運を祈る!

+0

Qtデザイナでは、すべてのプロパティを提案し、リストウィジェットにイベントフィルタをインストールしました。イベントが発砲されたかどうかは、私にとってはほとんど無作為のようです。たとえばdragLeaveEventは、まったく解雇されていないようです。イベントフィルタのアプローチは私にとって理にかなっており、イベントは解雇されるかどうかは非常にQt固有の問題であると思われますので、より詳細な質問をここに掲載しました(http://www.qtcentre.org/threads/47939-Can-t -catch-DragLeaveEvent /)を使用します。ご協力いただきありがとうございます! – steps

関連する問題