QSortFilterProxyModel 项中文件和文件夹的完整信息

full information of files and folders in QSortFilterProxyModel items

本文关键字:信息 文件夹 中文 文件 QSortFilterProxyModel      更新时间:2023-10-16

我在QTreeView中使用QSortFilterProxyModel来浏览目录的所有文件和文件夹。它工作正常。 但我的问题是当我点击QTreeView的任何项目时。我无法像完整路径一样获得它的信息。任何人都可以告诉我如何获取文件的完整路径。

谢谢

您可以通过以下方式计算完整路径。首先,您需要通过将clicked()信号连接到适当的插槽来跟踪QTreeView上的鼠标单击:

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

在您的插槽中,您可以调用帮助程序函数,该函数将返回单击的树节点的完整路径:

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;
}