将自定义项添加到QListWidget

时间:2016-10-05 19:55:16

标签: python qt pyqt qlistwidget

如何使用我选择的背景颜色将自定义项目添加到QListWidget,并为每个项目添加底部边框,如下图所示的草稿示例。

这是我写的代码:

from PyQt5 import QtWidgets, QtGui
import sys


class CustomListHead(QtWidgets.QWidget):
    def __init__(self):
        super(CustomListHead, self).__init__()
        self.project_title = QtWidgets.QLabel("Today")
        self.set_ui()

    def set_ui(self):
        grid_box = QtWidgets.QGridLayout()
        grid_box.addWidget(self.project_title, 0, 0)

        self.setLayout(grid_box)
        self.show()


class CustomListItem(QtWidgets.QWidget):
    def __init__(self):
        super(CustomListItem, self).__init__()
        self.project_title = QtWidgets.QLabel("Learn Python")
        self.task_title = QtWidgets.QLabel("Learn more about forms, models and include")
        self.set_ui()

    def set_ui(self):
        grid_box = QtWidgets.QGridLayout()

        grid_box.addWidget(self.project_title, 0, 0)
        grid_box.addWidget(self.task_title, 1, 0)

        self.setLayout(grid_box)
        self.show()


class MainWindowUI(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindowUI, self).__init__()
        self.list_widget = QtWidgets.QListWidget()
        self.set_ui()

    def set_ui(self):
        custom_head_item = CustomListHead()

        item = QtWidgets.QListWidgetItem(self.list_widget)
        item.setSizeHint(custom_head_item.sizeHint())

        self.list_widget.setItemWidget(item, custom_head_item)
        self.list_widget.addItem(item)

        custom_item = CustomListItem()
        item = QtWidgets.QListWidgetItem(self.list_widget)
        item.setSizeHint(custom_item.sizeHint())

        self.list_widget.addItem(item)
        self.list_widget.setItemWidget(item, custom_item)

        vertical_layout = QtWidgets.QVBoxLayout()
        vertical_layout.addWidget(self.list_widget)

        widget = QtWidgets.QWidget()
        widget.setLayout(vertical_layout)
        self.setCentralWidget(widget)
        self.show()


app = QtWidgets.QApplication(sys.argv)
ui = MainWindowUI()
sys.exit(app.exec_())

example

1 个答案:

答案 0 :(得分:0)

我看到你有QListWidgetItem。

从文档中,您可以自定义每个窗口小部件项目,自定义它并添加到listwidget:

可以使用setFont(),setForeground()和setBackground()自定义文本的外观。可以使用setTextAlignment()函数对齐列表项中的文本。工具提示,状态提示和"这是什么?"可以使用setToolTip(),setStatusTip(),a将帮助添加到列表项 d setWhatsThis()。

http://doc.qt.io/qt-5/qlistwidgetitem.html#details