2016-10-05 79 views
0

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

回答

0

我看你有QListWidgetItem你。

从文档,您可以自定义每个插件项目,自定义,并添加到您的listwidget:

文本的外观可以用setfont程序(),setForeground()进行定制和的setBackground()。列表项中的文本可以使用setTextAlignment()函数进行对齐。工具提示,状态提示和“这是什么?”可以通过setToolTip(),setStatusTip(),setWhatsThis()来将帮助添加到列表项中。

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

+0

当我设置样式表来QListWidget比设置背景颜色为项目,这最后一个这么想的工作。 –

+0

在样式表本身设置背景色。 listWidget-> setStyleSheet( “QListWidget ::项目{” “边框风格:固体;” “的border-width:1px的;” “边框颜色:黑色;” “背景色:绿色;” “}” – Naidu

+0

它不起作用,这就是我所做的:self.list_widget.setStyleSheet(“”“ QListWidget :: item {border} style:solid; border-width:1px; border-color:黑; 背景色:绿色; } “”“) 比我添加颜色背景像这样的第一项:item.setBackground(QtGui.QColor(255,255,100)) 结果,我得到的是:所有绿色的项目(在样式表中设置)。 –