2016-10-05 244 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(), d setWhatsThis().

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

+0

когда я установить таблицу стилей QListWidget и чем установить цвет фона для элемента, эта последняя работа dosen't. –

+0

Установите цвет фона в самой таблице стилей. listWidget-> setStyleSheet ( "QListWidget :: пункт {" "стиль границы: твердый;" "границы ширина: 1px;" "граница цвета: черный;" "цвет фона: зеленый;" «}» – Naidu

+0

он не работает, это то, что я сделал: self.list_widget.setStyleSheet («»» QListWidget :: пункт { стиль границы: твердый; границы ширина: 1px; граница цвета: черный background-color: green; } "" ") чем я добавляю цвет фона к первому элементу, как это: item.setBackground (QtGui.QColor (255, 255, 100)) результат, который я получено: все элементы зеленого цвета (которые устанавливаются в таблице стилей). –

Смежные вопросы