我正在尝试使用以下功能打印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
即使指向的文件位于子目录中,这些函数也只返回扩展名为源文件路径的文件名。
我做错了什么?
答案 0 :(得分:2)
在
QtCore.QFileInfo(index.data(0).toString())
您正在使用本地路径创建新的FileInfo实例。 fileinfo无法知道此文件名所在的文件夹,因此它使用默认文件夹。把它想象成
QtCore.QFileInfo("readme.txt")
fileInfo怎么知道你的意思是readme.txt在/ my / nice / files /文件夹中?
您应该从
获取fileInfoQFileSystemModel::fileInfo
所以在你的情况下:
self.model.fileInfo(index).absoluteFilePath()