Qt应用开发(基础篇)——表格视图 QTableView

news2024/11/16 22:57:17

一、前言

        QTableView类继承于QAbstractItemView类,提供了一个表格视图的模型。

        视图基类 QAbstractItemView

        QTableView默认为Model/View实现。

//绑定view和model
QStandardItemModel *model = new QStandardItemModel();
ui->tableView->setModel(model);
 
//view设置标题栏
model->setHorizontalHeaderLabels(QStringList()<<"log");
//view设置标题栏缩放策略
ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
 
//model插入数据
for(int i = 0 ; i<10 ;i++)
{
    int newRow = model->rowCount();//获取当前行数
    model->insertRow(newRow, QModelIndex());//插入一行
    model->setData(model->index(newRow, 0),"information");//插入数据
}

        QTableView表格视图带有横向和纵向的滚动条,当水平方向的内容放不下的时候,会自动显示出来。滚动条的信息保存在QScrollBar中,使用horizontalScrollBar()verticalScrollBar()获取部件类,配合QSS样式表设置滚动条的样式信息。

.QScrollBar:vertical{
    width:10px;
    background-color:#e9e9e9;
    padding-top:10px;
    padding-bottom:10px;
}
.QScrollBar:horizontal{
    height:10px;
    background-color:#e9e9e9;
    padding-left:10px;
    padding-right:10px;
}

        QTableView表格视图带有横向顶部和纵向左侧的头信息,头信息使用QHeaderView封装,使用verticalHeader()horizontalHeader()得到它们,顶部头一般用来显示列描述,左侧头一般用来显示行序号,默认显示,也可以关闭它们。

        QTableView表格视图也提供了很多常用的公共方法,用来设置表格的样式,rowHeight()得到行高,columnWidth()得到列宽,隐藏和显示某行某列使用hideRow(), hideColumn(), showRow()showColumn()

        QTableView表格视图和其他视图一样,支持使用标准委托来呈现和编辑,这在父类QAbstractItemView已经讲过,如果只是需要在某一个单元显示小部件,比如你想要某一行显示一个下拉框,而不是全部行都需要,那么你只需要使用setIndexWidget()indexWidget()来特殊设置和获取并操作即可。

二、QTableView

1、属性

1)cornerButtonEnabled

        该属性表示是否启用左上角的按钮,默认为true,单击此按钮将选择表视图中的所有单元格,当然前提是selectionMode不能设置为NoSelection。

bool isCornerButtonEnabled() const
void setCornerButtonEnabled(bool enable)
2)gridStyle

        该属性表示网格线的样式。       

Qt::PenStyle gridStyle() const
void setGridStyle(Qt::PenStyle style)

3)showGrid

        该属性表示是否显示网格线。

bool showGrid() const
void setShowGrid(bool show)
4)sortingEnabled

        该属性表示是否启用排序,该属性默认为false。

bool isSortingEnabled() const
void setSortingEnabled(bool enable)
5)wordWrap

        该属性表示列表中是否文本换行,默认为true,则项目文本在必要的换行处换行。

        这里要注意就算换行了,也不会展开单元格来为文本腾出空间。需要设置textElideMode(父类属性)来设置是否为不显示的文本显示“...”。

bool wordWrap() const
void setWordWrap(bool on)

2、公共函数

1)clearSpans

        清空全部行和列设置的跨度。

void clearSpans()
2)setSpan

        设置某行和列的行跨度和列跨度。

void setSpan(int row, int column, int rowSpanCount, int columnSpanCount)
3)columnSpan

        返回某单元的列跨度,默认为1。

int columnSpan(int row, int column) const
4)rowSpan

        返回某单元的行跨度,默认为1。

int rowSpan(int row, int column) const
5)horizontalHeader

        返回横向标题栏,封装在QHeaderView中。

QHeaderView *horizontalHeader() const
 6)setHorizontalHeader

        设置横向标题栏,封装在QHeaderView中。

void setHorizontalHeader(QHeaderView *header)
7)verticalHeader

        返回纵向标题栏,封装在QHeaderView中。

QHeaderView *verticalHeader() const
8setVerticalHeader

        设置纵向标题栏,封装在QHeaderView中。

void setVerticalHeader(QHeaderView *header)
9)columnWidth

        返回给定的列的宽度。

int columnWidth(int column) const
10)setColumnWidth

       设置给定的列的宽度。

void setColumnWidth(int column, int width)
11)rowHeight

        返回给定的行的高度。

int rowHeight(int row) const
12)rowHeight

        设置给定的行的高度。

void setRowHeight(int row, int height)
13)columnViewportPosition

        返回给定列的内容坐标中的x坐标。

int columnViewportPosition(int column) const
14)isColumnHidden

        返回给定的列是否隐藏。

bool isColumnHidden(int column) const
15)setColumnHidden

       设置某行是否隐藏。

void setColumnHidden(int column, bool hide)
16)isRowHidden

        返回给定的行是否隐藏。

bool isRowHidden(int row) const
17)setRowHidden

       设置某行是否隐藏。

void setRowHidden(int row, bool hide)
18)rowAt

       返回给定的内容坐标中y坐标所在的行。

 int rowAt(int y) const
19)columnAt

       返回给定的内容坐标中x坐标所在的列。

int columnAt(int x) const
20)setRowHeight

       设置某单元格的高度。

void setRowHeight(int row, int height)

3、公共槽函数

1)hideColumn

        隐藏给定的列。

void hideColumn(int column)
2)hideRow

        隐藏给定的行。

void hideRow(int row)
3)showColumn

        显示给定的列。

void showColumn(int column)
4)showRow

        显示给定的行。

void showRow(int row)
5)resizeColumnToContents

        调整给定列的大小,根据该列中委托的sizeHint。

 void resizeColumnToContents(int column)
6)resizeColumnsToContents

        调整全部列的大小,根据每个项中委托的sizeHint。

void resizeColumnsToContents()
7)resizeRowToContents

        调整给定行的大小,根据该列行中委托的sizeHint。

void resizeRowToContents(int row)
8)resizeRowsToContents

        调整全部行的大小,根据每个行中委托的sizeHint。

void resizeColumnsToContents()
9)selectColumn

        选中给定的一列。

void selectColumn(int column)
10)selectRow

        选中给定的一行。

void selectRow(int row)
11)sortByColumn

        对某一列进行排序。

void sortByColumn(int column, Qt::SortOrder order)
enum Qt::SortOrder描述
Qt::AscendingOrder项目按升序排序
Qt::DescendingOrder项目按降序排序

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

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

相关文章

手把手教你写一个JSON在线解析的前端网站1

前言 作为一名Android开发&#xff0c;经常要跟后端同事联调接口&#xff0c;那么总避免不了要格式化接口返回值&#xff0c;将其转换为清晰直观高亮的UI样式以及折叠部分内容&#xff0c;方便我们查看定位关键的信息。 一直以来都是打开Google 搜索json格式化关键字&#xf…

【无标题】期权交易的实际操作流程是什么?

期权可以进行双向交易&#xff0c;即投资者认为期权后期会上涨&#xff0c;则可以通过交易软件进行做多买入认购操作&#xff0c;如果认为它后期会下跌&#xff0c;则可以通过交易软件件进行做空买入认沽操作&#xff0c;下文介绍期权交易的实际操作流程是什么&#xff1f; 期权…

2023年中国手机回收量、手机回收价值及行业细分现状分析[图]

手机回收的主要去向包括再销售及环保降解两类。其中进行再交易的二手手机多为9成新及以上手机。二手手机最终去向主要为再销售及环保降解。 2016年以来&#xff0c;我国手机总体出货量持续下滑&#xff0c;2022年全年&#xff0c;国内市场手机总体出货量累计2.72亿部&#xff0…

【代码随想录】算法训练营 第一天 第一章 数组 Part 1

数组基础知识补充 1. 在leecode中&#xff0c;数组一般是以vector容器的形式出现的&#xff0c;虽然vector的底层实现是array&#xff0c;但严格来讲vector是容器&#xff0c;不是数组&#xff1b; 2. 数组元素的删除和增添都需要移动后续元素&#xff0c;而且在实现的角度上…

C++初阶 入门

目录 1.用C的方式写一个Hello World 2.命名空间 2.1什么是命名空间&#xff1f; 2.2使用命名空间 3.C的输入输出 前言&#xff1a;C初阶系列&#xff0c;每一期博主都会使用简单朴素的语言将对应的知识分享给大家&#xff0c;争取让所有人都可以听懂&#xff0c;C初阶系列…

跨境电商迎来全球5日达革命?菜鸟全球化再提速!

近年来&#xff0c;随着全球化进程的加速和跨境电商的蓬勃发展&#xff0c;物流速度成为了电商行业的竞争制高点之一。消费者不再满足于等待数周&#xff0c;甚至数月的国际快递&#xff0c;他们期望能够像本地购物一样迅速收到国际包裹。 在这一背景下&#xff0c;跨境电商物…

众佰诚:开一家抖音小店需要交押金不?

随着电商行业的不断发展&#xff0c;越来越多的商家开始尝试在不同的平台上开设自己的店铺。抖音作为国内最热门的短视频平台之一&#xff0c;也吸引了众多商家的目光。那么&#xff0c;开一家抖音小店需要交押金吗?接下来&#xff0c;我们就来详细了解一下。 首先&#xff0c…

山西电力市场日前价格预测【2023-10-13】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-13&#xff09;山西电力市场全天平均日前电价为228.86元/MWh。其中&#xff0c;最高日前价格为396.88元/MWh&#xff0c;预计出现在18: 30。最低日前电价为0.00元/MWh&#xff0c;预计出…

TCP/IP(十二)TCP的确认、超时、重传机制

一 TCP的确认应答机制 确认应答机制: 每次收到数据 都会 给对端发送一个应答报文(ACK) ① 带重传的肯定确认 确认机制: 超时 重传的 肯定 确认 --> 完成了两个作用,或者说有两个含义1、肯定[正确] 确认小结&#xff1a; 我的确认信息是针对正确数据做确认,而不是错误…

YOLOv5算法改进(2)— 注意力机制介绍(SE、CBAM和CA)

前言:Hello大家好,我是小哥谈。注意力机制是近年来深度学习领域内的研究热点,可以帮助模型更好地关注重要的特征,从而提高模型的性能。注意力机制可被应用于模型的不同层级,以便更好地捕捉图像中的细节和特征,这种模型在计算资源有限的情况下,可以实现更好的性能和效率。…

免费SSL证书

在当今数字化时代&#xff0c;保护用户数据和建立安全连接至关重要。对于网站管理员和拥有者来说&#xff0c;SSL证书&#xff08;Secure Sockets Layer&#xff09;是确保安全的关键工具之一。但是&#xff0c;传统上购买和维护SSL证书可能会带来昂贵的成本和繁琐的流程。幸运…

百度车牌识别AI Linux使用方法-armV7交叉编译

1、获取百度ai的sdk 百度智能云-登录 (baidu.com) 里面有两个版本的armV7和armV8架构。v7架构的性能比较低往往需要交叉编译&#xff0c;v8的板子性能往往比较好&#xff0c;可以直接在板子上编译。 解压到ubuntu里面。这里介绍v7架构的。 2、ubuntu环境配置 ubuntu下安装软件…

学生静态HTML网页作品下载后如何导入到HBuilderX中编辑修改及运行

很多同学编辑网页要求使用HBuilder X软件&#xff0c;下载学生网页设计作品后&#xff0c;不知道如何打开&#xff0c;很多同学反应把HTML中的代码复制到HBuilder X后不显示图片或者跑版。今天STU网页为大家讲解下静态HTML网页作品如何导入HBuilder X中运行。 HBuilder X 导入…

『PyQt5-Qt Designer篇』| 13 Qt Designer中如何给工具添加菜单和工具栏?

13 Qt Designer中如何给工具添加菜单和工具栏? 1 创建默认窗口2 添加菜单栏3 查看和调用1 创建默认窗口 当新创建一个窗口的时候,默认会显示有:菜单栏和状态栏,如下: 可以在菜单栏上右键-移除菜单栏: 可以在菜单栏上右键-移除状态栏: 2 添加菜单栏 在窗口上,右键-创建…

城市排水管网监测方案(新型排水管网智能监测技术)

随着我国城市化进程不断加快,城市的排水管网也日益增长并变得复杂,对其进行实时监测以确保正常运行变得极为重要。针对此需求,基于工业物联网技术的新型智能排水管网监测系统为城市排水管网的运行与维护提供了有效手段。 该智能排水管网监测系统以无线通讯功能强大的SG600工业…

VMware和Debian下载

文章目录 ⭐️写在前面的话⭐️一、VMware二、Debain三、建立虚拟机&#x1f680; 先看后赞&#xff0c;养成习惯&#xff01;&#x1f680;&#x1f680; 先看后赞&#xff0c;养成习惯&#xff01;&#x1f680; ⭐️写在前面的话⭐️ CSDN主页&#xff1a;程序员好冰 目前在…

uniapp + vue3 静态图片引入

方法一 从新定义路径 一定看好你图片的路径 代码 <template><div class"main">Main<img :src"getImg()" alt""></div> </template><!-- 方式一 // <script setup> // let imgName logo.png // cons…

共享WiFi二维码项目如何加盟代理?有哪些注意事项!

随着移动互联网的发展&#xff0c;如今WiFi热点已成为人们日常生活的必需品。而共享wifi二维码项目也渐渐成为了一个非常有前景的共享商业模式。用户可以通过扫共享wifi二维码享受免费的上网服务&#xff0c;而加盟商则可以赚取一定的推广费用&#xff0c;是一种非常理想的商业…

ppt怎么压缩到10m以内?分享ppt缩小方法

在日常工作中&#xff0c;我们常常需要制作和分享PowerPoint演示文稿&#xff0c;然而&#xff0c;有时候文稿中的图片、视频等元素会导致文件过大&#xff0c;无法在电子邮件或其他平台上顺利传输。为了将PPT文件压缩到10M以内&#xff0c;我们可以使用一些专门的文件压缩工具…

EasyRAFT

EasyRaft 介绍 EasyRaft是Raft&#xff08;共识算法&#xff09;的Java实现&#xff0c;主要目的在于提供一种高性能的分布式一致性协议。 覆盖Jraft实现的功能 分布式一致性 分布式一致性 (distributed consensus) 是分布式系统中最基本的问题&#xff0c;用来保证一个分布式…