为什么我的 QFileSystemView 不能从 'set' 位置开始?
Why won't my QFileSystemView start at the 'set' location?
我有一个 QDialog,它传递了一个起始文件夹,我希望它是将被选中的文件夹,并且上层文件夹会展开。一切都按计划进行,除了 window 打开时所有文件夹都折叠起来并且只显示根图标。我一定是遗漏了一些简单的东西,因为这不可能是火箭科学……
class FolderSelectDialog(QDialog):
def __init__(self, startingFolderName, parent = ZipRenamer):
super(FolderSelectDialog, self).__init__()
uic.loadUi('rootSelectDialog.ui', self)
fileModel = QFileSystemModel()
fileModel.setFilter(QDir.Dirs | QDir.NoDot | QDir.NoDotDot)
fileModel.setRootPath(startingFolderName)
self.selectedPath = startingFolderName
self.fileSelectTreeView.setModel(fileModel)
self.fileSelectTreeView.resizeColumnToContents(0)
self.fileSelectTreeView.expand(fileModel.index(startingFolderName))
expand()
只扩展指定的索引,不 它的父索引。它不应该,因为您可能想要展开或折叠一个索引,即使它的任何父索引都折叠了,这样当它们再次展开时,先前指定的索引将使用选定状态。
使用setCurrentIndex()
,这将隐式扩展父索引并确保指定的索引可见。
此外,此时调用 resizeColumnToContents()
是错误的,因为在 尝试扩展索引之前调用 将导致将列大小调整为 current 内容,在这种情况下,这将是单独的根路径,因为它的所有子项仍处于折叠状态。
self.fileSelectTreeView.header().setSectionResizeMode(0,
QtWidgets.QHeaderView.ResizeToContents)
我有一个 QDialog,它传递了一个起始文件夹,我希望它是将被选中的文件夹,并且上层文件夹会展开。一切都按计划进行,除了 window 打开时所有文件夹都折叠起来并且只显示根图标。我一定是遗漏了一些简单的东西,因为这不可能是火箭科学……
class FolderSelectDialog(QDialog):
def __init__(self, startingFolderName, parent = ZipRenamer):
super(FolderSelectDialog, self).__init__()
uic.loadUi('rootSelectDialog.ui', self)
fileModel = QFileSystemModel()
fileModel.setFilter(QDir.Dirs | QDir.NoDot | QDir.NoDotDot)
fileModel.setRootPath(startingFolderName)
self.selectedPath = startingFolderName
self.fileSelectTreeView.setModel(fileModel)
self.fileSelectTreeView.resizeColumnToContents(0)
self.fileSelectTreeView.expand(fileModel.index(startingFolderName))
expand()
只扩展指定的索引,不 它的父索引。它不应该,因为您可能想要展开或折叠一个索引,即使它的任何父索引都折叠了,这样当它们再次展开时,先前指定的索引将使用选定状态。
使用setCurrentIndex()
,这将隐式扩展父索引并确保指定的索引可见。
此外,此时调用 resizeColumnToContents()
是错误的,因为在 尝试扩展索引之前调用 将导致将列大小调整为 current 内容,在这种情况下,这将是单独的根路径,因为它的所有子项仍处于折叠状态。
self.fileSelectTreeView.header().setSectionResizeMode(0,
QtWidgets.QHeaderView.ResizeToContents)