当前位置: 首页 > news >正文

qt QTableView详解

1、概述

QTableView 是 Qt 框架中的一个高级视图类,用于以表格形式展示二维数据。它基于 QAbstractItemView,并与模型(通常是 QAbstractTableModel 或 QStandardItemModel)结合使用,以实现数据的展示和交互。QTableView 提供了灵活的列宽调整、行高设置、单元格编辑以及数据排序和筛选等功能。它支持多种选择模式,如单选、多选和扩展选择,以及通过委托(delegates)来自定义单元格的渲染和编辑行为。

2、重要方法

QTableView 提供了丰富的 API 来管理和展示数据,以下是一些重要的方法:

  • setModel:设置数据模型,将数据模型与视图关联起来。
  • selectionModel 和 setSelectionModel:获取和设置选择模型,用于管理用户的选择。
  • horizontalHeader 和 verticalHeader:获取表格的水平和垂直表头,用于自定义表头的外观和行为。
  • resizeColumnsToContents 和 resizeRowsToContents:根据内容自动调整列宽和行高。
  • setSortingEnabled:启用或禁用排序功能。
  • setEditTriggers:设置编辑触发器,决定何时可以编辑单元格。
  • setCurrentIndex 和 currentIndex:设置和获取当前选中的单元格。
  • setSpan:设置单元格的跨行和跨列数。
3、重要信号

QTableView 发射多种信号来响应用户的操作和数据的变更,以下是一些重要的信号:

  • clicked:单击某个单元格时发射此信号。
  • doubleClicked:双击某个单元格时发射此信号。
  • pressed:按下鼠标按钮时发射此信号。
  • released:释放鼠标按钮时发射此信号。
  • selectionChanged:选择发生变化时发射此信号。
  • currentChanged:当前单元格发生变化时发射此信号。
  • cellClickedcellDoubleClickedcellPressedcellReleased:这些信号提供了更细粒度的控制,允许开发者根据单元格的位置和索引来响应事件。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{setWindowTitle("QTableView Example");resize(600, 400);// 创建数据模型QStandardItemModel *model = new QStandardItemModel;model->setHorizontalHeaderLabels({"Name", "Age", "Occupation"});QList<QStandardItem *> row1;row1 << new QStandardItem("Alice") << new QStandardItem("30") << new QStandardItem("Engineer");model->appendRow(row1);QList<QStandardItem *> row2;row2 << new QStandardItem("Bob") << new QStandardItem("25") << new QStandardItem("Designer");model->appendRow(row2);QList<QStandardItem *> row3;row3 << new QStandardItem("Charlie") << new QStandardItem("35") << new QStandardItem("Manager");model->appendRow(row3);QList<QStandardItem *> row4;row4 << new QStandardItem("David") << new QStandardItem("40") << new QStandardItem("Director");model->appendRow(row4);// 创建表视图QTableView *tableView = new QTableView;tableView->setModel(model);tableView->resizeColumnsToContents(); // 自动调整列宽tableView->setSelectionMode(QAbstractItemView::SingleSelection); // 设置选择模式为单选tableView->setSortingEnabled(true); // 启用排序功能tableView->setShowGrid(true); // 显示网格线// 布局管理QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(tableView);QWidget *centralWidget = new QWidget;centralWidget->setLayout(layout);setCentralWidget(centralWidget);
}

觉得有帮助的话,打赏一下呗。。

           

http://www.lryc.cn/news/478404.html

相关文章:

  • 将Notepad++添加到右键菜单【一招实现】
  • Nature Methods | 基于流形约束的RNA速度推断精准解析细胞周期动态调节规律
  • 在离线环境中使用sealos工具快速部署一套高可用的k8s服务集群
  • ReactPress系列—Next.js 的动态路由使用介绍
  • DevOps业务价值流:需求设计最佳实践
  • A15基于Spring Boot的宠物爱心组织管理系统的设计与实现
  • RC高通滤波器Bode图分析(传递函数零极点)
  • SpeechT5 模型
  • 网站用户行为分析:方法、工具与实践
  • 医疗医药企业新闻稿怎么写?健康行业品牌宣传背书的报纸期刊杂志媒体有哪些
  • 2024-11-06 问AI: [AI面试题] 人工智能如何用于欺诈检测和网络安全?
  • 个人3DCoat设置分享
  • Spark 程序开发与提交:本地与集群模式全解析
  • Linux编程:DMA增加UDP 数据传输吞吐量并降低延迟
  • 鸿蒙开启无线调试
  • C. DS循环链表—约瑟夫环 (Ver. I - B)
  • 【刷题】优选算法
  • Python 在PDF中绘制形状(线条、矩形、椭圆形等)
  • 《今日制造与升级》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • loading为什么不更新
  • Rust 力扣 - 1652. 拆炸弹
  • 使用Golang实现开发中常用的【并发设计模式】
  • 基于Zynq FPGA对雷龙SD NAND的性能测试评估
  • 4.WebSocket 配置与Nginx 的完美结合
  • Docker:镜像构建 DockerFile
  • 浮动路由:实现出口线路的负载均衡冗余备份。
  • 二叉树的遍历和线索二叉树
  • SpringBoot3 集成Junit4
  • Scala的set的添加删减和查询
  • 基于微信小程序的移动学习平台的设计与实现+ssm(lw+演示+源码+运行)