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

Другие вопросы по тегам