Pergunta

Estou usando o QSortFilterProxymodel no QtreeView para explorar todos os arquivos e pastas de um diretório. Está funcionando bem. Mas meu problema é quando clico em qualquer item do QtreeView. Não consigo obter suas informações como o caminho completo. Alguém pode me dizer como obter seu caminho completo do arquivo.

Obrigado,

Foi útil?

Solução

Você pode calcular o caminho completo com a seguinte maneira. Primeiro você precisa rastrear cliques no mouse no QTreeView com a conexão do clicked() sinal para o slot apropriado:

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

No seu slot, você pode chamar a função ajudante que retornará o caminho completo do nó da árvore clicada:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top