2

ファイル名を入力する QListWidget があります (パスのないファイル名はアイテムのテキストであり、完全なパスはアイテムのツールチップにあります)。たとえば、映画ファイルを QListWidget から VLC にドラッグできるようにしたいのですが、ファイル マネージャーからドラッグした場合と同じように、VLC が再生を開始する必要があります。

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

4

1 に答える 1

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;
        }
};
于 2012-03-13T11:43:07.847 に答える