Frage

ich eine QListWidget, die ich mit Dateinamen füllen (der Dateiname ohne Pfad ist der Text der Artikel und der vollständige Pfad ist im Tooltip des Elements). Ich mag ziehen zu können, zum Beispiel eine Filmdatei auf VLC aus meinem QListWidget und VLC sollte es anfangen zu spielen -. Das gleiche, als ob ich es von einem Dateimanager gezogen hatte

Ich habe versucht, die Dokumentation über Drag & Drop zu lesen, kann aber nicht herausfinden, wie es zu tun. Ich habe dragenabled Eigenschaft auf true gesetzt, und dragDropMode Eigenschaft drag. Jetzt kann ich einen Zug starten, aber wenn ich ein Listenelement zu VLC ziehe nichts passiert (was nicht verwunderlich ist).

War es hilfreich?

Lösung

Ich wollte genau die gleiche Sache zu tun, hier ist das, was ich kam mit. Es funktioniert auf Windows, aber ich habe nicht auf anderen Plattformen getestet.

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;
        }
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top