質問

ディレクトリのすべてのファイルとフォルダーを探索するために、QTreeViewでQSORTFILTERPROXYMODELを使用しています。その正常に動作しています。しかし、私の問題は、Qtreeviewのアイテムをクリックするときです。フルパスのような情報を取得することはできません。ファイルのフルパスを取得する方法を教えてください。

ありがとう、

役に立ちましたか?

解決

次の方法でフルパスを計算できます。まず、マウスのクリックを追跡する必要があります QTreeView 接続して clicked() 適切なスロットへの信号:

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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top