Как я могу вставить элементы значков в моем QListWidget в виджет или отобразить сверху вниз, а не слева направо?

#python #qlistwidget #pyside2

#python #qlistwidget #pyside2

Вопрос:

Я использую PySide. У меня есть QListWidget, который я заполняю элементами значков. Значки отображаются слева направо по умолчанию, и я бы хотел, чтобы они отображались сверху вниз или имели вертикальный макет, а не горизонтальный. Как я могу этого добиться?

из этого:введите описание изображения здесь

к этому:

введите описание изображения здесь

Ответ №1:

Вы должны установить flow свойство на QListView::TopToBottom :

 from PySide2 import QtCore, QtGui, QtWidgets


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = QtWidgets.QListWidget()
    w.setViewMode(QtWidgets.QListView.IconMode)
    w.setIconSize(QtCore.QSize(128, 128))
    w.setResizeMode(QtWidgets.QListView.Adjust)
    w.setFlow(QtWidgets.QListView.TopToBottom)
    for path in ("icon1.png", "icon2.png"):
        it = QtWidgets.QListWidgetItem()
        it.setIcon(QtGui.QIcon(path))
        w.addItem(it)
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())
  

введите описание изображения здесь

Комментарии:

1. с одной стороны, что, если бы я хотел, чтобы метка для значка отображалась справа от значка, а не под ним? Например, «kroger» будет отображаться справа от значка, а не под ним.

2. @winteralfs Возможно, делегат поможет реализовать эту функцию