【问题标题】:Add custom items to QListWidget将自定义项目添加到 QListWidget
【发布时间】:2023-04-02 23:01:01
【问题描述】:

如何将自定义项目添加到具有我选择的背景颜色的 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_())

【问题讨论】:

    标签: python qt pyqt qlistwidget


    【解决方案1】:

    我看到你有 QListWidgetItem。

    您可以从文档中自定义每个小部件项目,对其进行自定义并添加到您的列表小部件中:

    可以使用 setFont()、setForeground() 和 setBackground() 自定义文本的外观。可以使用 setTextAlignment() 函数对齐列表项中的文本。工具提示、状态提示和“这是什么?”可以使用 setToolTip()、setStatusTip() 和 d setWhatsThis()。

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

    【讨论】:

    • 当我将样式表设置为 QListWidget 并将背景颜色设置为项目时,最后一个不起作用。
    • 在样式表本身中设置背景颜色。 listWidget->setStyleSheet("QListWidget::item {" "border-style:solid;" "border-width:1px;" "border-color:black;" "background-color: green;" "}"
    • 它不起作用,这就是我所做的:self.list_widget.setStyleSheet(""" QListWidget::item {border-style:solid;border-width:1px;border-color: black; background-color: green; } """) 比我像这样为第一个项目添加颜色背景: item.setBackground(QtGui.QColor(255, 255, 100)) 我得到的结果是:所有项目绿色(在样式表中设置)。
    • 我遗漏了一些东西。你能参考下面的链接吗?它可能对您有所帮助。 stackoverflow.com/questions/36018010/…
    • 我阅读了您告诉我的链接中的问题和答案,并尝试使用委托,但仍然无法做到我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多