Pyside6 --Qt设计师--简单了解各个控件的作用之:Item Views

目录

  • 一、List View
  • 二、Tree View
  • 三、Table View
  • 四、Column View

一、List View

学习方法和Buttons一样,大家自己在qt设计师上面在属性编辑区进行相应的学习!

我就先紧着qt设计师的页面进行讲解,部分内容查自AI。
后面有什么好用的控件或者拓展的,我会单独出,!

定义与用途:
定义:ListView(列表视图)是图形用户界面(GUI)中用于展示数据列表的一种组件。它以一种有序的方式呈现数据项,通常每个数据项占据一行,并且可以包含文本、图标或其他自定义的内容。用户可以通过滚动条浏览列表中的所有项目,并且可以对列表项进行选择、排序、分组等操作。
用途举例:在文件管理器中,文件和文件夹列表通常通过ListView展示,用户可以查看文件名称、大小、修改日期等信息;在音乐播放器的播放列表界面,歌曲列表以ListView形式呈现,方便用户选择歌曲进行播放;在邮件客户端中,收件箱中的邮件列表也是ListView的典型应用场景,用户可以查看邮件主题、发件人等信息,并选择邮件进行阅读。
外观特点:
行式布局:ListView以垂直排列的行来展示数据项。每一行代表一个数据元素,行的高度可以根据数据内容的多少或预设的样式进行调整。例如,在展示文件列表时,文件名较长的文件对应的行可能会更高,以完整显示文件名。
可选的头部和分隔符:可以有列表头部(header),用于显示列名(如果是多列数据),如在文件管理器的列表视图中,头部可能会显示 “名称”“大小”“类型”“修改日期” 等列标题。同时,列表项之间可能会有分隔线,用于视觉上区分不同的项目,增强可读性。
滚动条支持:当列表中的数据项数量超过视图的可见范围时,会自动出现滚动条,用户可以使用滚动条上下滚动来查看所有的项目。滚动条的样式和行为通常可以根据操作系统或应用程序的设计风格进行定制。

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QListView,QVBoxLayout
from PySide6.QtCore import QStringListModel

class Mainwindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("LIst View 学习!")
        self.setGeometry(100, 100, 400, 300)


        # 创建中央布局
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # 创建垂直布局
        ver_layout = QVBoxLayout()

        # 创建listview
        list_view = QListView()

        # 创建数据模型
        model = QStringListModel()
        str_list = ["王", "李", "孙", "赵000000000000000000000000000000000000000000000000000000000000000000000000"]
        model.setStringList(str_list)

        # 将数据模型与listView关联
        list_view.setModel(model)

        # 添加list到垂直布局
        ver_layout.addWidget(list_view)

        # 添加到中心布局
        central_widget.setLayout(ver_layout)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainwindow = Mainwindow()
    mainwindow.show()
    sys.exit(app.exec())

在这里插入图片描述

二、Tree View

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QTreeView, QVBoxLayout
from PySide6.QtGui import QStandardItemModel, QStandardItem


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Tree View 学习!")
        self.setGeometry(100, 100, 600, 400)

        # 创建中央布局部件
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # 创建垂直布局管理器
        ver_layout = QVBoxLayout()

        # 创建Tree View实例
        tree_view = QTreeView()

        # 创建模型
        model = QStandardItemModel()
        model.setHorizontalHeaderLabels(["公司结构"])

        # 创建根节点(代表公司)
        company_item = QStandardItem("ymchuangke科技公司")

        # 创建部门节点并添加到公司根节点下
        department_1 = QStandardItem("研发部")
        department_2 = QStandardItem("市场部")
        department_3 = QStandardItem("财务部")

        company_item.appendRow(department_1)
        company_item.appendRow(department_2)
        company_item.appendRow(department_3)

        # 为研发部添加员工子节点
        department_1.appendRow(QStandardItem("研发人员1"))
        department_1.appendRow(QStandardItem("研发人员2"))

        # 为市场部添加员工子节点
        department_2.appendRow(QStandardItem("市场专员1"))
        department_2.appendRow(QStandardItem("市场专员2"))

        # 为财务部添加员工子节点
        department_3.appendRow(QStandardItem("财务人员1"))
        department_3.appendRow(QStandardItem("财务人员2"))

        # 将根节点添加到模型
        model.appendRow(company_item)

        # 设置模型到Tree View
        tree_view.setModel(model)

        # 展开所有节点
        tree_view.expandAll()

        # 将Tree View添加到垂直布局中
        ver_layout.addWidget(tree_view)

        # 添加到中央布局
        central_widget.setLayout(ver_layout)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = MainWindow()
    main_window.show()
    sys.exit(app.exec())

运行结果如下:
在这里插入图片描述

三、Table View

定义:Table View(表格视图)是一种图形用户界面(GUI)组件,用于以表格形式展示数据。它由行和列组成,每一行代表一个数据记录,每一列代表一个数据字段。用户可以通过滚动条浏览表格中的大量数据,并且能够对表格中的数据进行选择、排序、编辑等操作。
用途举例:在数据库管理软件中,Table View用于展示数据库表中的数据记录,用户可以查看、修改和删除数据;在电子表格软件中,它是核心组件,用于用户输入和编辑数据,进行公式计算等操作;在数据报表工具中,Table View可以将数据以整齐的表格形式呈现,方便用户查看和分析数据。

行列结构:表格视图呈现出明显的行列布局,行与列交叉形成单元格,每个单元格用于显示一个数据项。列通常有列标题,用于描述该列数据的含义,如在数据库表视图中,列标题可能是 “姓名”“年龄”“性别” 等字段名。
可选的行表头和列表头:除了列标题外,还可以有行表头用于标记行的信息,不过这种情况相对较少,更多的是使用列标题来标识数据内容。同时,列表头(如果存在)和列标题可以进行一些交互操作,如排序(点击列标题可以按照该列数据进行升序或降序排列)。
滚动条支持:当表格中的数据行或列过多,超出视图范围时,会出现滚动条。水平滚动条用于浏览超出视图宽度的列,垂直滚动条用于浏览超出视图高度的行,方便用户查看整个表格的数据。

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QTableView
from PySide6.QtCore import QAbstractItemModel, QModelIndex, Qt


class Mytablemodel(QAbstractItemModel):
    def __init__(self):
        super().__init__()
        # 在这里可以初始化你的数据,例如一个二维列表来模拟表格数据
        self.data_list = [
            ["数据1行1列", "数据1行2列"],
            ["数据2行1列", "数据2行2列"]
        ]

    def rowCount(self, parent=QModelIndex()):
        # 返回表格的行数,parent参数用于处理树形结构数据(这里简单情况可忽略)
        return len(self.data_list)

    def columnCount(self, parent=QModelIndex()):
        # 返回表格的列数,同样parent参数在简单情况可忽略
        return len(self.data_list[0]) if self.data_list else 0

    def data(self, index, role=Qt.DisplayRole):
        # 根据给定的索引和角色(如显示角色)返回对应单元格的数据
        if role == Qt.DisplayRole:
            row = index.row()
            col = index.column()
            return self.data_list[row][col]
        return None

    def index(self, row, column, parent=QModelIndex()):
        # 创建并返回对应行列位置的索引对象,parent用于树形结构(简单情况按如下返回)
        return self.createIndex(row, column, None)

    def parent(self, index):
        # 返回给定索引对应的父索引,在简单表格数据(非树形结构)中返回无效索引
        return QModelIndex()

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 初始化
        self.setWindowTitle("Table View学习!")
        self.setGeometry(100, 100, 400, 300)


        # 创建中央布局
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # 创建垂直布局
        ver_layout = QVBoxLayout()


        # 创建Table View
        table_view = QTableView()

        # 创建数据模型并设置数据
        model = Mytablemodel() # 自定义数据模型
        table_view.setModel(model)

        # 将tableview添加到垂直布局
        ver_layout.addWidget(table_view)

        # 垂直布局到中央布局
        central_widget.setLayout(ver_layout)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainwindow = MainWindow()
    mainwindow.show()
    sys.exit(app.exec())

运行结果如下:
在这里插入图片描述

四、Column View

定义:Column View(列视图)是一种图形用户界面(GUI)组件,用于以列的形式展示数据和信息。它通常将数据组织成多个垂直的列,用户可以在各列之间进行浏览和交互。每一列可以包含文本、图标或者其他自定义的内容,并且这些列之间可能存在某种关联或者层次结构。
用途举例:在文件管理器的某些视图模式下,可能会使用列视图来展示文件系统的层次结构。第一列显示文件夹,当用户选择一个文件夹后,第二列会显示该文件夹下的子文件夹和文件,依此类推。这种视图方式可以让用户方便地在不同层次的信息之间进行导航;在一些具有分类信息的应用程序中,如音乐库管理软件,一列可以显示音乐类型,另一列显示该类型下的歌手,再一列显示歌手的专辑等,方便用户按照分类层次查找和浏览音乐资源。

多列垂直布局:Column View的主要外观特征是多个垂直的列。这些列通常是并排排列的,列与列之间有一定的间隔,以区分不同的信息类别。每一列的宽度可以根据内容自动调整,也可以由用户手动调整,以更好地展示数据或满足个人浏览习惯。
层次展示和关联(可选):在一些高级的Column View应用场景中,列与列之间存在层次关系,用户在一列中选择一个项目后,与之相关的下一列内容会相应更新,显示与所选项目相关的详细信息或子项目。

import sys
from PySide6.QtGui import QStandardItemModel, QStandardItem
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QColumnView



class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Column View 学习!")
        self.setGeometry(100, 100, 800, 600)

        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        ver_layout = QVBoxLayout()

        # 创建列视图
        column_view = QColumnView()

        # 创建数据模型
        model = QStandardItemModel()

        # 模拟添加多列数据
        column_1_data = ["1", "2", "3"]
        column_2_data = ["a", "b", "c"]
        column_3_data = ["x", "y", "z"]

        # 为第一列添加数据
        root_item = model.invisibleRootItem()
        for data in column_1_data:
            item = QStandardItem(data)
            root_item.appendRow(item)

        # 为第二列添加数据(这里简单关联第一列的每个项目)
        for row in range(model.rowCount()):
            parent_item = model.item(row)
            for sub_data in column_2_data:
                sub_item = QStandardItem(sub_data)
                parent_item.appendRow(sub_item)

        # 为第三列添加数据(同样简单关联第二列的每个项目)
        for row in range(model.rowCount()):
            parent_item_1 = model.item(row)
            for sub_row in range(parent_item_1.rowCount()):
                parent_item_2 = parent_item_1.child(sub_row)
                for sub_data in column_3_data:
                    sub_item = QStandardItem(sub_data)
                    parent_item_2.appendRow(sub_item)

        # 将数据模型与列视图关联
        column_view.setModel(model)

        ver_layout.addWidget(column_view)
        central_widget.setLayout(ver_layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainwindow = MainWindow()
    mainwindow.show()
    sys.exit(app.exec())

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936630.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【vue2+Flowable工作流,审批流前端展示组件】

文章目录 概要整体架构流程技术细节小结 概要 vue2Flowable工作流,审批流前端展示组件。 本人已实现activiti工作流引入vue2, 如有需求请移步activiti工作流单独引入vue2方法, 全网最全!!! vue全局日期格式化成年月日 时分秒 如有需求请移步vuemomen…

uni-app多环境配置动态修改

前言 这篇文章主要介绍uniapp在Hbuilderx 中,通过工程化,区分不同环境、动态修改小程序appid以及自定义条件编译,解决代码发布和运行时手动切换问题。 背景 当我们使用uniapp开发同一个项目发布不同的环境二级路径不同时,这时候…

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述

最近参与某海外大型车企(T)的 Wi-Fi 功能需求开发,T 提出了一个 Cabin Wi-Fi 的概念,首先我们先对 Cabin Wi-Fi 进行一个较全面的了解。 1. Cabin Wi-Fi 概念概述 Cabin Wi-Fi 通常指用于飞机客舱、火车车厢、豪华巴士或船舶上的无…

如何在 Ubuntu 22.04 上安装和使用 Rust 编程语言环境

简介 Rust 是一门由 Mozilla 开发的系统编程语言,专注于性能、可靠性和内存安全。它在没有垃圾收集的情况下实现了内存安全,这使其成为构建对性能要求苛刻的应用程序(如操作系统、游戏引擎和嵌入式系统)的理想选择。 接下来&…

MATLAB图卷积神经网络GCN处理分子数据集节点分类研究

全文链接:https://tecdat.cn/?p38570 本文主要探讨了如何利用图卷积网络(GCN)对图中的节点进行分类。介绍了相关的数据处理、模型构建、训练及测试等环节,通过对分子数据集的操作实践,展示了完整的节点分类流程&#…

简易CPU设计入门:本系统所写入的指令

项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后,我…

rabbitMq举例

新来个技术总监,把 RabbitMQ 讲的那叫一个透彻,佩服! 生产者 代码举例 public String sendMsg(final String exchangeName,final String routingKey,final String msg) {} /*** 发送消息* param exchangeName exchangeName* param routin…

对话小系统(智能图书助手)

对话小系统(智能图书助手) 文章说明核心代码效果展示源码下载 文章说明 现在GPT的功能十分强大,是否可以利用开源的接口来实现自己的智能小助手呢,我想到可以提供一些能力接口,然后对问询内容进行意图识别,…

数智读书笔记系列006 协同进化:人类与机器融合的未来

书名:协同进化:人类与机器融合的未来 作者:[美]爱德华阿什福德李 译者:李杨 出版时间:2022-06-01 ISBN:9787521741476 中信出版集团制作发行 爱德华・阿什福德・李(Edward Ashford Lee)是一位在计算机科学与工程领域颇具影响力的学者&am…

C# 探险之旅:第二十七节 - 类型class(属性) —— 给你的类穿上“属性”的外衣

嘿,探险家们!欢迎再次踏上我们的C#奇幻之旅。今天,我们要聊聊一个超级有趣的话题——类的“属性”。想象一下,如果我们要给类穿上一件酷炫的外衣,那属性就是这件外衣上的各种口袋和装饰,让类变得既实用又拉…

数据保护策略:如何保障重要信息的安全

一、什么是数据安全? 数据安全是保护数字信息免遭盗窃、未经授权的访问和恶意修改的过程。这是一个持续的过程,负责监督信息的收集、存储和传输。 机密性:保护数据免遭未授权方访问。 完整性:保护数据免遭未经授权的修改、损坏…

Mvc、Springmvc框架

一.Mvc: 1.概念: MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 、View视图 、Controller控制层; 结构图: 二.Springmvc: 1.概念: springmvc框架它是spring框架的一个分支。它是按照mvc架构思想设计…

【CSS in Depth 2 精译_078】12.6 调整字间距,提升可读性 + 12.7 本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 12.1.1 使用 em 还是 px12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 12.2 Web 字体12.3 谷歌字体12.4 font-fac…

Python高性能web框架-FastApi教程:(2)路径操作装饰器方法

路径操作装饰器方法 1. fastapi支持的各种请求方式 app.get() app.post() app.put() app.patch() app.delete() app.options() app.head() app.trace()2. 定义不同请求方式的路由 # 定义GET请求的路由 app.get(/get) def get_test():return {method: get方法} app.get(/get)…

PostgreSQL 入门

下载与安装 部分国产数据库采用PostgreSQL作为基础进行研发,因此先尝试了解一下原始数据库情况。 PostgreSQL 简称 PG 官网:https://www.postgresql.org/ PostgreSQL “世界上最先进的开源关系型数据库” 这是官网上的口号。 PostgreSQL: The World…

Java-26 深入浅出 Spring - 实现简易Ioc-02 无IoC与AOP场景下实现业务

点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatis&#xff…

工作流审批功能全解析:提升流程效率的关键要素

1. 引言 在当今数字化时代,企业与组织的运营效率在很大程度上依赖于高效、精准的工作流审批系统。随着业务日益复杂且多样化,审批流程变得愈加细致和灵活。一个完善的工作流审批系统不仅能确保任务在组织内部有序流转、协调各方资源,还能实现…

API接口示例:电商商品评论数据

当然,以下是一个简化的电商商品评论数据API接口的示例。请注意,这只是一个示例,实际的API接口可能会更加复杂,并且会包含更多的验证、错误处理和安全措施。 API接口示例:电商商品评论数据 基础信息 API名称&#xf…

HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由

网络层数据封装 首先IP地址封装在网络层,它用于标识一台网络设备,其中IP地址分为两个部分,网络地址和主机地址,通过我们采用点分十进制的形式进行表示。 IP地址分类 对IP地址而言,它细分为五类,A,B,C,D,E,…

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。