Pregunta

Estoy usando QSortFilterProxyModel en QTreeview para explorar todos los archivos y carpetas de un directorio. Está funcionando bien. Pero mi problema es cuando hago clic en cualquiera de los elementos de Qtreeview. No puedo obtener su información como una ruta completa. ¿Alguien puede decirme cómo obtener su ruta completa del archivo?

Gracias,

¿Fue útil?

Solución

Puede calcular la ruta completa de la siguiente manera. Primero debe rastrear los clics del mouse en el QTreeView con conectar el clicked() señal a la ranura apropiada:

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

En su ranura, puede llamar a la función ayudante que devolverá la ruta completa del nodo del árbol haciendo clic:

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