如何在包含文件的QListWidget中实现拖放?
-
28-09-2019 - |
题
我有一个QlistWidget,我用文件名填充(没有路径的文件名是该项目的文本,并且整个路径都在项目的工具提示中)。我希望能够从我的qlistwidget上拖动电影文件到VLC,而VLC应该开始播放它 - 就像我从文件管理器拖动它一样。
我尝试阅读有关拖放的文档,但无法弄清楚如何做。我已经将Dragenable属性设置为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