ファイルを含むqlistwidgetにドラッグを実装する方法は?
-
28-09-2019 - |
質問
ファイル名で埋める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;
}
};
所属していません StackOverflow