QListWidget设置QWidget作为QListWidgetItem

该代码示例展示了如何在PyQt5中实现QListWidget按照像素进行水平和垂直滚动,并且使用自定义的QWidget作为QListWidgetItem。它创建了两个编辑器(QTextEdit)用于输入,并将它们添加到QListWidget中,同时实现了文本改变时的信号槽连接,以便保存内容。
摘要由CSDN通过智能技术生成



1、实现QListWidget按照N像素进行滑动;
2、实现自定义QWidget作为QListWidgetItem;



代码实现:

from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout, QHBoxLayout, QTextEdit, QListWidget, QListWidgetItem, QScrollArea
from PyQt5.QtGui import QFont
from PyQt5.Qt import Qt, QSize
from model.info_json_data import InfoJson

class InfoPanel(QWidget):
    def __init__(self, parent, info_dict):
        super(InfoPanel, self).__init__(parent)

        self.info_dict = info_dict

        #设置QListWidget
        self.info_item_s = QListWidget(self)
        self.info_item_s.setHorizontalScrollMode(QListWidget.ScrollPerPixel)
        self.info_item_s.setVerticalScrollMode(QListWidget.ScrollPerPixel)
        self.info_item_s.verticalScrollBar().setSingleStep(5)
        self.info_item_s.horizontalScrollBar().setSingleStep(5)

        self.hobby_widget = QWidget()
        self.matter_widget = QWidget()


        self.hobby_label = self.create_label(self.hobby_widget)
        self.matter_label = self.create_label(self.matter_widget)

        self.hobby_layout = QVBoxLayout()
        self.hobby_edit = self.create_edit(self.hobby_widget)
        self.hobby_layout.addWidget(self.hobby_label)
        self.hobby_layout.addWidget(self.hobby_edit)

        self.matter_layout = QVBoxLayout()
        self.matter_edit = self.create_edit(self.matter_widget)
        self.matter_layout.addWidget(self.matter_label)
        self.matter_layout.addWidget(self.matter_edit)

        # self.info_item_s.setLayout(self.hlayout)
        self.hobby_widget.setLayout(self.hobby_layout)

        self.matter_widget.setLayout(self.matter_layout)


        self.hobby_item = QListWidgetItem()
        self.hobby_item.setSizeHint(QSize(self.hobby_widget.width(), 300))
        self.info_item_s.addItem(self.hobby_item)
        self.info_item_s.setItemWidget(self.hobby_item, self.hobby_widget)

        self.matter_item = QListWidgetItem()
        self.matter_item.setSizeHint(QSize(self.matter_widget.width(), 300))
        self.info_item_s.addItem(self.matter_item)
        self.info_item_s.setItemWidget(self.matter_item, self.matter_widget)

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.info_item_s)
        self.setLayout(self.layout)

        # signal -> slot
        self.matter_edit.textChanged.connect(self.save_matter_context)
        self.hobby_edit.textChanged.connect(self.save_hobby_context)


    @staticmethod
    def create_label(parent):
        font = QFont()
        font.setFamily('LiSu')
        font.setPointSize(16)

        label = QLabel(parent)
        label.setFont(font)
        label.setAlignment(Qt.AlignLeft)
        return label

    @staticmethod
    def create_edit(parent):
        font = QFont()
        font.setFamily('LiSu')
        font.setPointSize(14)
        edit = QTextEdit(parent)
        edit.setFont(font)
        edit.setAlignment(Qt.AlignLeft)
        return edit
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KPer_Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值