Создайте для каждой группы список со всеми элементами, отсортируйте список по произвольному свойству и добавьте группы элементов в желаемом порядке в 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 соответствующим образом элементы могут быть сгруппированы в строки: