Question

J'ai un QListWidget que je remplis avec des noms de fichiers (le nom du fichier sans chemin d'accès est le texte de l'élément, et le chemin complet est dans l'info-bulle de l'élément). Je veux être en mesure de glisser, par exemple, un fichier vidéo à VLC de mon QListWidget, et VLC devrait commencer à jouer -. Comme si je l'avais traîné d'un gestionnaire de fichiers

J'ai essayé de lire la documentation sur Drag & Drop, mais ne pouvait pas comprendre comment le faire. J'ai mis la propriété dragEnabled true, et la propriété dragDropMode à DragOnly. Maintenant, je peux commencer un frein, mais si je fais glisser un élément de liste à rien VLC arrive (ce qui n'a rien d'étonnant).

Était-ce utile?

La solution

Je voulais faire exactement la même chose, voici ce que je suis venu avec. Il fonctionne sur Windows, mais je n'ai pas testé sur d'autres plates-formes.

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;
        }
};
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top