2

我有一个 QListWidget,我用文件名填充(没有路径的文件名是项目的文本,完整路径在项目的工具提示中)。例如,我希望能够将电影文件从我的 QListWidget 拖动到 VLC,并且 VLC 应该开始播放它 - 就像我从文件管理器中拖动它一样。

我已经尝试阅读有关拖放的文档,但无法弄清楚如何去做。我已将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 回答