質問

ファイル名で埋めるqlistWidgetがあります(パスのないファイル名はアイテムのテキストであり、フルパスはアイテムのツールチップにあります)。たとえば、QlistWidgetからVLCへのムービーファイルをドラッグできるようにしたいと考えています。VLCは、ファイルマネージャーからドラッグしたのと同じように、それを再生し始める必要があります。

ドラッグアンドドロップのドキュメントを読んでみましたが、その方法を理解できませんでした。 DragEnabledプロパティをTrueに設定し、DragDropModeプロパティをDragonlyに設定しました。これでドラッグを開始できますが、リスト項目をVLCにドラッグすると、何も起こりません(驚くことではありません)。

役に立ちましたか?

解決

私はまったく同じことをしたかったのですが、ここに私が思いついたものがあります。 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;
        }
};
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top