2015-02-16 6 views

ответ

3

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