полная информация о файлах и папках в элементах QSortFilterProxyModel

Я использую QSortFilterProxyModel в QTreeView для изучения всех файлов и папок каталога. Он работает нормально. но моя проблема в том, что я нажимаю на любой элемент QTreeView. Я не могу получить его информацию, например полный путь. Может кто-нибудь, пожалуйста, скажите мне, как получить полный путь к файлу.

Спасибо,


person Ashish    schedule 07.11.2013    source источник


Ответы (1)


Вы можете рассчитать полный путь следующим образом. Сначала нужно отслеживать щелчки мыши на 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;
}
person vahancho    schedule 07.11.2013
comment
Привет, Ванханчо, еще одна вещь, которую я хочу спросить: в моем Qtreeview при двойном щелчке по элементам дерева также генерируется событие одиночного щелчка. Я хочу только событие двойного щелчка. Пожалуйста, помогите мне, как остановить его для входа в слот одного события. Спасибо - person Ashish; 13.11.2013