如何在 PyQt5 QFileIconProvider 中为打开的文件夹添加图标
How to add icon for a opened folder in PyQt5 QFileIconProvider
我知道要为未打开但未打开的普通文件夹添加图标
如何为打开的文件夹添加图标
这是我当前的代码
class FileIconProvider(QFileIconProvider):
def icon(self, parameter):
if isinstance(parameter, QFileInfo):
info = parameter
if info.isDir():
#if it is folder then
return QIcon("icons/folder.svg")
#but how to check whether the folder is opened and give icon for it?
return super(FileIconProvider, self).icon(parameter)
每当索引展开时,QTreeView 都会将项目的样式选项设置为 State_Open
,委托将其用于 select 适当的图标 state.
解决方案是将新文件添加到具有该状态的现有图标:
class FileIconProvider(QFileIconProvider):
def icon(self, parameter):
if isinstance(parameter, QFileInfo):
if parameter.isDir():
icon = QIcon("icons/folder.svg")
icon.addFile("icons/folder-open.svg", state=icon.On)
return icon
return super().icon(parameter)
请注意,虽然这通常适用于任何地方,但不能绝对保证当前样式或委托尊重它,如果它不起作用,您需要设置自定义委托并更改选项图标initStyleOption()
.
我知道要为未打开但未打开的普通文件夹添加图标 如何为打开的文件夹添加图标
这是我当前的代码
class FileIconProvider(QFileIconProvider):
def icon(self, parameter):
if isinstance(parameter, QFileInfo):
info = parameter
if info.isDir():
#if it is folder then
return QIcon("icons/folder.svg")
#but how to check whether the folder is opened and give icon for it?
return super(FileIconProvider, self).icon(parameter)
每当索引展开时,QTreeView 都会将项目的样式选项设置为 State_Open
,委托将其用于 select 适当的图标 state.
解决方案是将新文件添加到具有该状态的现有图标:
class FileIconProvider(QFileIconProvider):
def icon(self, parameter):
if isinstance(parameter, QFileInfo):
if parameter.isDir():
icon = QIcon("icons/folder.svg")
icon.addFile("icons/folder-open.svg", state=icon.On)
return icon
return super().icon(parameter)
请注意,虽然这通常适用于任何地方,但不能绝对保证当前样式或委托尊重它,如果它不起作用,您需要设置自定义委托并更改选项图标initStyleOption()
.