Domanda

Ho un QListWidget, che riempio con i nomi dei file (il nome del file senza percorso è il testo della voce, e il percorso completo è nella descrizione comando della voce). Voglio essere in grado di trascinare, per esempio, un filmato a VLC dal mio QListWidget, e VLC dovrebbe iniziare a giocare -. Lo stesso come se avessi trascinato da un file manager

Ho provato a leggere la documentazione sul Drag & Drop, ma non riuscivo a capire come farlo. Ho impostare la proprietà dragEnabled su true e dragDropMode proprietà dragonly. Ora posso iniziare un freno, ma se mi trascino un elemento della lista a VLC non succede nulla (il che non è sorprendente).

È stato utile?

Soluzione

ho voluto fare la stessa cosa, ecco cosa mi è venuta. Funziona su Windows, ma non ho ancora testato su altre piattaforme.

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;
        }
};
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top