我有一个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;
        }
};
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top