Как перечислить элементы как группы в QListWidget
Можно ли установить элементы QListWidget в группах.
Например, если я добавляю содержимое папки в список виджетов. Я хочу показать все папки в группе папок и файлы в группе файлов. Как на картинке ниже.
Является ли это возможным.
1 ответ
Создайте для каждой группы список со всеми элементами, отсортируйте список по произвольному свойству и добавьте группы элементов в нужном порядке в listwidget. Между или перед группами может быть добавлен разделитель или заголовок, группы могут иметь разные стили.
например, ваши группы файлов / папок:
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 соответствующим образом, элементы могут быть сгруппированы в строки: