pyqt 列表控件QListView

发布于:2024-05-19 ⋅ 阅读:(151) ⋅ 点赞:(0)

pyqt 列表控件QListView

  • QListView
  • 效果
  • 代码

QListView

QListView 是 PyQt 中的一个控件,它用于显示项目列表的视图。这些项目通常来自一个模型(QAbstractItemModel 或其子类),但也可以直接使用 QListWidget(这是 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_())

网站公告

今日签到

点亮在社区的每一天
去签到