Qtの新機能で、一部のディレクトリをQTreeView
に隠そうとしています。私はCacheFilterProxy
という名前のカスタムQSortFilterProxy
を使って、名前に基づいていくつかのフォルダを隠そうとしています。カスタムQSortFilterProxyにQFileSystemModelを使用できません
fileModel = QtGui.QFileSystemModel()
rootIndex = fileModel.setRootPath(rootDir)
fileModel.setFilter(QtCore.QDir.Dirs | QtCore.QDir.NoDotAndDotDot)
fileModel.setNameFilters([patternString])
model = CacheFilterProxy()
model.setSourceModel(fileModel)
self.fileTreeView.setModel(model)
self.fileTreeView.setRootIndex(model.mapFromSource(rootIndex))
self.fileTreeView.clicked.connect(self.selectedFileChanged)
、その後、self.selectedFileChanged
に私は、ツリービューで現在選択されている項目のファイル名やファイルパスを指定して抽出しよう:ツリーがこのように表示
Iセットアップ。ファイルの名前は簡単に取得できますが、ファイルパスを取得するとプログラム全体が停止して終了します。
def selectedFileChanged(self, index):
fileModel = self.fileTreeView.model().sourceModel()
indexItem = self.fileTreeView.model().index(index.row(), 0, index.parent())
# this works normal
fileName = fileModel.fileName(indexItem)
# this breaks the entire program
filePath = fileModel.filePath(indexItem)
まあ、それはかなり明白に思えました、私はそれを(私はフィルター法で同じことをしたために)起こしたと思っていましたが、私はそれをやることを忘れてしまった。以前はファイル名の取得がうまくいきました。 – Mehraban