2010-11-28 13 views
2

私はファイル名で塗りつぶしたQListWidgetを持っています(パスのないファイル名は項目のテキストで、フルパスは項目のツールチップにあります)。例えば、私のQListWidgetからVLCにムービーファイルをドラッグできるようにしたいのですが、VLCはそれを再生しなければなりません - ファイルマネージャからドラッグした場合と同じです。ファイルを含むQListWidgetでドラッグを実装する方法は?

Drag & Dropのドキュメントを読んでみましたが、それを行う方法がわかりませんでした。 dragEnabledプロパティをtrueに設定し、dragDropModeプロパティをDragOnlyに設定しました。今度はドラッグを開始できますが、リスト項目をVLCにドラッグすると何も起こりません(これは驚くべきことではありません)。

+0

QListWidget :: mimeDataをオーバーライドし、QMimeData :: setUrlsでファイル名を設定することを試みました。 QListWidget :: mimeDataが呼び出されますが、ドラッグはまだ機能しません。 – sashoalm

答えて

2

私はまったく同じことをしたかった、ここで私が思いついたのです。 Windows上で動作しますが、他のプラットフォームではテストしていません。

class CustomListWidget : public QListWidget 
{ 
    public : 
     CustomListWidget(QWidget * parent = 0) : QListWidget(parent) {} 
    protected : 
     QStringList mimeTypes() const 
     { 
      QStringList qstrList; 
      qstrList.append("text/uri-list"); 
      return qstrList; 
     } 
     QMimeData * mimeData(const QList<QListWidgetItem *> items) const 
     { 
      QMimeData *data = new QMimeData(); 
      QList<QUrl> urls; 
      QUrl url; 
      url.setPath(items[ 0 ]->toolTip()); 
      urls.append(url); 
      data->setUrls(urls); 
      return data; 
     } 
}; 
関連する問題