Pregunta

Tengo un QListWidget la que me llene con los nombres de archivo (el nombre del archivo sin la ruta de acceso es el texto del artículo, y la ruta completa está en una sugerencia del elemento). Quiero ser capaz de arrastre, por ejemplo, un archivo de película en VLC de mi QListWidget, y VLC debe empezar a jugar -. Lo mismo que si hubiera arrastrado desde un gestor de archivos

He intentado leer la documentación de arrastrar y soltar, pero no podía encontrar la manera de hacerlo. He establecer la propiedad dragEnabled en true y dragDropMode propiedad a dragonly. Ahora puedo empezar un lastre, pero si me arrastra un elemento de lista a VLC no pasa nada (lo cual no es sorprendente).

¿Fue útil?

Solución

lo que quería hacer exactamente lo mismo, esto es lo que ocurrió. Funciona en Windows, pero no he probado en otras plataformas.

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;
        }
};
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top