2016-10-05 3 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()를 사용하여 목록 항목에 도움말을 추가 할 수 있습니다. 내가 항목으로 설정 배경 색상 QListWidget과보다 스타일 시트를 설정

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

+0

이 마지막 나던 작동합니다. –

+0

스타일 시트 자체에 배경색을 설정하십시오. listWidget-> setStyleSheet ( "QListWidget :: 항목 {" "국경 스타일 : 고체;" "국경 폭 : 1 x 1 픽셀;" "국경 - 색상 : 검정;" "배경 색 : 녹색;" ""(self.list_widget.setStyleSheet " QListWidget :: 항목 { 국경 스타일 : 고체, 국경 폭 :"} " – Naidu

+0

가 작동하지 않습니다, 이것은 내가 무슨 짓을 1 픽셀의, 국경 색상 :background-color : green; } "" ") 다음과 같은 첫 번째 항목에 배경색을 추가하십시오. item.setBackground (QtGui.QColor (255, 255, 100)) 있어 : 모두 녹색 색상의 항목 (스타일 시트로 설정) –

관련 문제