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

news2024/12/17 1:12:37

目录

  • 一、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())

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS MultiPatch数据转换Obj数据

文章目录 ArcGIS MultiPatch数据转换Obj数据1 效果2 技术路线2.1 Multipatch To Collada2.2 Collada To Obj3 代码实现4 附录4.1 环境4.2 一些坑ArcGIS MultiPatch数据转换Obj数据 1 效果 2 技术路线 MultiPatch --MultipatchToCollada–> Collada --Assimp–> Obj 2.…

【mybatis】缓存

目录 1. mybatis的运行 1.1 引言 1.2 具体运行: 1.3 sqlSession 介绍local catch 2. 缓存 2.1 概念 2.2 使用缓存的原因 2.3 什么样的数据能使用缓存 3. Mybatis缓存 3.1 一级缓存 3.1.1 测试一级缓存 3.1.2 缓存失效的四种情况 $1 sqlSession不同 $…

ElasticSearch - 理解doc Values与Inverted Index倒排索引

文章目录 概述倒排索引:从图书馆的索引卡片谈起倒排索引的工作原理 docValues:从数据库的列式存储说起docValues的工作原理 docValues与倒排索引的对比两者的联系:组合使用,优化搜索与分析 小结 概述 在使用 Elasticsearch 进行大…

Python | 数据可视化中常见的4种标注及示例

在Python的数据可视化中,标注(Annotation)技术是一种非常有用的工具,它可以帮助用户更准确地解释图表中的数据和模式。在本文中,将带您了解使用Python实现数据可视化时应该了解的4种标注。 常见的标注方式 文本标注箭…

【原生js案例】如何实现一个穿透字体颜色的导航

普通的导航大家都会做,像这种穿透字体的导航应该很少见吧。高亮不是通过单独设置一个active类来设置字体高亮颜色,鼠标滑过导航项,字体可以部分是黑色,不分是白色,这种效果的实现 感兴趣的可以关注下我的系列课程【we…

前端中图标的使用

1 antd 使用inconfont.cn中的图标 <template><div class"icons-list"><icon-font type"icon-tuichu" /><icon-font type"icon-facebook" /><icon-font type"icon-twitter" /></div> </templ…

回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 CNN-BiGRU,即卷积神经网络(CNN)与双…

医学分割数据集B超图片肝脏分割数据集labelme格式271张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;271 标注数量(json文件个数)&#xff1a;271 标注类别数&#xff1a;1 标注类别名称:["liver"] 每个类别标注的框数&#xf…

【目标检查】YOLO系列之:Triton 推理服务器Ultralytics YOLO11

Triton 推理服务器 1、引言2、Triton服务器2.1 什么是Triton Inference Server2.2 将YOLO11 导出为ONNX 格式2.3 设置Triton 模型库2.3.1 创建目录结构2.3.2 将导出的ONNX 模型移至Triton 资源库 2.4 运行Triton 推断服务器2.4.1 使用 Docker 运行Triton Inference Server2.4.2…

论文学习——多种变化环境下基于多种群进化的动态约束多目标优化

论文题目&#xff1a;Multipopulation Evolution-Based Dynamic Constrained Multiobjective Optimization Under Diverse Changing Environments 多种变化环境下基于多种群进化的动态约束多目标优化&#xff08;Qingda Chen , Member, IEEE, Jinliang Ding , Senior Member, …

【C++】判断能否被 3, 5, 7 整除问题解析与优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;老师代码实现与分析老师代码逻辑分析优点缺点 &#x1f4af;学生代码实现与分析学生代码逻辑分析优点缺点 &#x1f4af;改进与优化优化代码实现优化…

【构建工具】现代开发的重要角色

你可能有所听闻构建工具&#xff0c;但是不知道是干什么的&#xff0c;或者是开发中用到了&#xff0c;大概会使用&#xff0c;但是想理解一下具体的工作原理等&#xff0c;那么我将分享一下我对其的理解。【 我将分为两篇来讲解】。 当我们谈到构建工具时&#xff0c;可以把它…

npm或yarn包配置地址源

三种方法 1.配置.npmrc 文件 在更目录新增.npmrc文件 然后写入需要访问的包的地址 2.直接yarn.lock文件里面修改地址 简单粗暴 3.yarn install 的时候添加参数 设置包的仓库地址 yarn config set registry https://registry.yarnpkg.com 安装&#xff1a;yarn install 注意…

Unity集成Wwise并进行开发

1. 背景 项目要接入WWise&#xff0c;学习一下 1.1 与Unity自带音频系统的区别 Unity有自己的原生音乐功能&#xff1a;AduioSound。但是这个功能较为简单&#xff0c;对于音效开发人员来说并不是很友好。在一些大型的游戏中&#xff0c;音效会接入Wwise这个软件。音效开发者…

【AI知识】有监督学习之回归任务(附线性回归代码及可视化)

1. 回归的基本概念 在机器学习的有监督学习中&#xff0c;回归&#xff08;Regression&#xff09;是一种常见的任务&#xff0c;它的目标是通过观察数据来建立一个模型&#xff0c;用一个或多个自变量来预测因变量的值。 回归分析通常用于&#xff1a; a.预测&#xff0c;基于…

C语言专题之宏的基本概念

合理使用宏可以使我们的代码更加简单&#xff0c;接下来小编就来讲解宏的基本概念&#xff01; 一、宏的定义 宏定义是C/C语言中一项强大而灵活的特性&#xff0c;它允许程序员使用预处理器指令来创建简化的代码表示。这种机制不仅提高了代码的可读性和可维护性&#xff0c;还…

MySQL 复合查询(重点)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 MySQL 复合查询&#xff08;重点&#xff09; 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; …

WPF 控件

<div id"content_views" class"htmledit_views"><p id"main-toc"><strong>目录</strong></p> WPF基础控件 按钮控件&#xff1a; Button:按钮 RepeatButton:长按按钮 RadioButton:单选按钮 数据显示控件 Te…

Docker方式安装人人影视离线完整安装包

本文软件由网友 ルリデ 推荐&#xff1b; 上周&#xff0c;人人影视创始人宣布将人人影视二十年字幕数据开源分享 目前提供了两种使用方式&#xff1a; “在线应用” &#xff1a;意味着需要有互联网才可以使用。官方提供了网站&#xff1a;https://yyets.click “离线使用” …

opencv——(图像梯度处理、图像边缘化检测、图像轮廓查找和绘制、透视变换、举例轮廓的外接边界框)

一、图像梯度处理 1 图像边缘提取 cv2.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) 功能&#xff1a;用于对图像进行卷积操作。卷积是图像处理中的一个基本操作&#xff0c;它通过一个称为卷积核&#xff08;或滤波器&#xff09;的小矩阵在图像上…