pyqt QListWidget控件与QListView控件对比

pyqt QListWidget控件与QListView控件对比

  • QListWidget
  • QListView
  • 效果
    • QListWidget效果
    • QListWidget使用代码
    • QListView 效果
    • QListView代码
  • 总结

QListWidget

QListWidget 是一个结合了 QListView 和一个标准模型(QStringListModel)的控件。这使得 QListWidget 非常适合于简单的列表应用,因为它隐藏了模型/视图架构的复杂性。你可以直接通过 QListWidget 添加、插入和删除 QListWidgetItem

QListView

QListView 是一个视图控件,它使用模型/视图架构来显示数据。这意味着**你需要一个模型(如 QStringListModel 或自定义模型)**来提供数据给 QListView。QListView 本身不存储数据,它只是数据的可视化表示。这使得 QListView 在需要自定义数据表示或更复杂的交互时更加灵活。

效果

QListWidget效果

在这里插入图片描述

QListWidget使用代码

import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QWidget, QVBoxLayout


class QListWidgetExample(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.listWidget = QListWidget(self)

        # 添加 QListWidgetItem 到 QListWidget
        for i in range(5):
            item = QListWidgetItem(f"Item {i + 1}")
            self.listWidget.addItem(item)

            # 设置布局
        layout = QVBoxLayout(self)
        layout.addWidget(self.listWidget)

        # 设置窗口标题和大小
        self.setWindowTitle('QListWidget Example')
        self.setGeometry(100, 100, 300, 200)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = QListWidgetExample()
    ex.show()
    sys.exit(app.exec_())

QListView 效果

在这里插入图片描述

QListView代码

from PyQt5.QtWidgets import QApplication, QListView, QVBoxLayout, QWidget, QPushButton
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtCore import Qt


class ListViewExample(QWidget):
    def __init__(self):
        super().__init__()

        # 初始化UI
        self.initUI()

    def initUI(self):
        # 设置布局
        layout = QVBoxLayout(self)

        # 创建一个模型
        self.model = QStandardItemModel(0, 1)  # 0行1列

        # 添加一些数据
        for i in range(50):  # 假设有50条数据
            item = QStandardItem(f"Item {i + 1}")
            self.model.appendRow(item)

            # 设置模型可以排序
        self.model.setSortRole(Qt.DisplayRole)
        self.model.sort(0, Qt.AscendingOrder)

        # 创建一个视图并设置模型
        self.view = QListView()
        self.view.setModel(self.model)

        # 添加视图到布局
        layout.addWidget(self.view)

        # 可选:添加一个按钮以触发排序
        sort_button = QPushButton("Sort Descending")
        sort_button.clicked.connect(self.sortDescending)
        layout.addWidget(sort_button)

        # 设置窗口标题和大小
        self.setWindowTitle('QListView Example with Sorting')
        self.setGeometry(100, 100, 300, 300)

    def sortDescending(self):
        # 根据第一列降序排序
        self.model.sort(0, Qt.DescendingOrder)


if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    ex = ListViewExample()
    ex.show()
    sys.exit(app.exec_())

总结

  • QListWidget 简单易用,适用于快速创建简单的列表。
  • QListView 提供了更多的灵活性和定制性,适合需要更复杂数据表示或交互的场景。
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

立秋6789

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

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

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

打赏作者

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

抵扣说明:

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

余额充值