Я пытаюсь распечатать путь к файлу, указанный в treeView со следующими функциями:
1) Настройка корневого индекса для treeView: self.treeView.setRootIndex(self.model.setRootPath("/some/unix/catalog"))
2) Установка соединения между щелчком файла и функцией, которая печатает имя:
QtCore.QObject.connect(self.ui.treeView, QtCore.SIGNAL("clicked(QModelIndex)"), self.print_path)
3) Печать внутри функции print_path, которая принимает (QModelIndex) индекс в качестве аргумента
print QtCore.QFileInfo(index.data(0).toString()).absoluteFilePath()
Моя проблема в том, что я получаю:
/path/to/source/files/of/the/project/nameofthefile.extension
вместо:
/path/to/pointed/file/nameofthefile.extension
Даже если указанные файлы находятся в подкаталогах, эти функции возвращают только имя файла с расширением, объединенным в путь к исходным файлам.
Что я делаю неправильно?
В
QtCore.QFileInfo(index.data(0).toString())
вы создаете новый экземпляр FileInfo только с локальным путем. Файлinfo не имеет возможности узнать, в какой папке находится это имя файла, поэтому он использует папку по умолчанию. Подумайте об этом как
QtCore.QFileInfo("readme.txt")
Как может fileInfo знать, что вы имеете в виду, что readme.txt находится в /my/nice/files/folder?
Вы должны получить fileInfo из
QFileSystemModel::fileInfo
Итак, в вашем случае:
self.model.fileInfo(index).absoluteFilePath()