如何在 QListWidget 中将项目列为组
Posted
技术标签:
【中文标题】如何在 QListWidget 中将项目列为组【英文标题】:How to list items as groups in QListWidget 【发布时间】:2015-02-16 06:53:34 【问题描述】:是否可以分组设置 QListWidget 项。
例如,如果我将文件夹的内容添加到列表小部件。我想显示文件夹组中的所有文件夹和文件组中的文件。如下图所示。
有没有可能。
【问题讨论】:
【参考方案1】:为每个组创建一个包含所有项目的列表,按任意属性对列表进行排序,然后按所需顺序将项目组添加到列表小部件。可以在组之间或组前添加分隔符或标题,组可以得到不同的样式。
例如您的文件/文件夹组:
files.sort() # list of files
folders.sort() # list of folders
for f in folders:
item = QtWidgets.QListWidgetItem()
item.setIcon(QtGui.QIcon('icon1.xpm'))
item.setText(f)
# set further properties like font, background ...
item.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEnabled)
self.listWidget.addItem(item)
item = QtWidgets.QListWidgetItem() # delimiter
item.setText('-----------------------')
item.setFlags(QtCore.Qt.NoItemFlags) # item should not be selectable
self.listWidget.addItem(item)
for f in files:
item = QtWidgets.QListWidgetItem()
item.setIcon(QtGui.Qicon('icon2.xpm'))
item.setText(f)
# set further properties like font, background ...
item.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEnabled)
self.listWidget.addItem(item)
对于文件和文件夹,QTreeView/QFileSystemModel 可能是另一种解决方案。
以相应的方式使用 QTableWidget 可以将项目分组为行:
【讨论】:
以上是关于如何在 QListWidget 中将项目列为组的主要内容,如果未能解决你的问题,请参考以下文章