Frage

Ich verwende QsortFilterProxymodel in Qreeview, um alle Dateien und Ordner eines Verzeichnisses zu untersuchen. Es funktioniert gut. Mein Problem ist jedoch, wenn ich auf ein Element von QTreeview klicke. Ich bin nicht in der Lage, seine Informationen wie den vollständigen Pfad zu erhalten. Kann mir bitte jemand sagen, wie ich seinen vollständigen Weg der Datei einbezieht.

Vielen Dank,

War es hilfreich?

Lösung

Sie können den vollständigen Pfad mit dem folgenden Weg berechnen. Zuerst müssen Sie Mausklicks auf die verfolgen QTreeView mit Verbinden der clicked() Signal auf den entsprechenden Steckplatz:

connect(treeview, SIGNAL(clicked(const QModelIndex &)), this, SLOT(onItemClicked(const QModelIndex &)); 

In Ihrem Slot können Sie die Helferfunktion aufrufen, die den vollständigen Pfad des geklickten Baumknotens zurückgibt:

void TreeView::onItemClicked(const QModelIndex &index)
{
    QString path = fullPath(index);
    // ..
}

QString TreeView::fullPath(const QModelIndex &index)
{
    QString path('/');
    QModelIndex parent = index;
    while (parent.isValid()) {
        path.prepend('/' + parent.data().toString());
        parent = parent.parent();
    }
    return path;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top