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

一、前言

        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.mzph.cn/news/107457.shtml

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

相关文章

福建建筑模板厂家-能强优品木业

福建建筑模板厂家-能强优品木业&#xff0c;是一家专业从事建筑模板生产销售25年的源头工厂。我们以优质的产品和卓越的服务赢得了福建当地建筑施工企业的信赖与合作。作为一家有着丰富经验的建筑模板厂家&#xff0c;我们致力于提供高品质的产品&#xff0c;以满足客户的需求。…

【算法|前缀和系列No.1】牛客网 DP34 【模板】前缀和

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【牛客网刷题】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希…

TCP/IP(九)TCP的连接管理(六)TIME_WAIT状态探究

一 TIME_WAIT探究 要明确TIME_WAIT状态在tcp四次挥手的阶段 ① 为什么 TIME_WAIT 等待的时间是 2MSL? 背景&#xff1a; 客户端在收到服务端第三次FIN挥手后,就会进入TIME_WAIT 状态,开启时长为2MSL的定时器1、MSL 是 Maximum Segment Lifetime 报文最大生存时间2、2MSL…

3500/15 106M1079-01 支持先进和复杂的人工智能计算

3500/15 106M1079-01 支持先进和复杂的人工智能计算 耐能NPU IP系列允许ResNet、YOLO和其他深度学习网络在离线环境下的边缘设备上运行。耐能NPU IP为edge AI提供完整的硬件解决方案&#xff0c;包括硬件IP、编译器、模型压缩。它支持各种类型的卷积神经网络(CNN)模型&#xf…

架构真题2017(五十三)

在磁盘上存储数据的排列方式会影响 I/O服务的总时间。假设每磁道划分成10个物理块&#xff0c;每块存放1个逻辑记录。逻辑记录R1&#xff0c;R2&#xff0c; ...&#xff0c; RI0存放在同一个磁道上&#xff0c; 记录的安排顺序如下表所示 ; 假定磁盘的旋转速度为30ms/周&…

某游戏公司Java面试八股文总结

1.值传递和引用传递区别&#xff1f;Java中为什么都是值传递&#xff1f; 值传递&#xff08;Pass by Value&#xff09;&#xff1a; 在值传递中&#xff0c;函数或方法的参数是原始数据的拷贝&#xff0c;而不是原始数据本身。当你将一个值传递给函数时&#xff0c;函数内部…

消失的人!消除视频中不需要的人物

视频拍摄中拍摄了不相干或者是不需要出现的人物&#xff0c;想要从视频中去除&#xff0c;应该如何操作呢&#xff1f;有什么快捷方法可以轻松扣除视频中的人物&#xff1f; 我们在视频剪辑的时候都有这样的烦恼吧&#xff1f;就是在一段视频素材里有多余的人物出现&#xff0…

uniapp 使用和引入 thorui

1. npm install thorui-uni 2. "easycom": { "autoscan": true, "custom": { "tui-(.*)": "thorui-uni/lib/thorui/tui-$1/tui-$1.vue" } }, 3.

身份证照片怎么弄成200k以内?三个方法轻松搞定!

在日常生活中&#xff0c;为了方便上传和保存、便于传输和处理以及符合相关规定等方面的考虑&#xff0c;身份证照片大小常常被要求控制在200k以内&#xff0c;可是手机随便一拍&#xff0c;任凭如何截图都在超过1M&#xff0c;这个时候就需要借助一些图片压缩工具&#xff0c;…

前端项目--尚医通学习分享

这段时间跟着线上课程完成了一个项目&#xff1a;商医通&#xff08;基于Vue3TypeScript的医院挂号平台&#xff09;。具体我就不过多地介绍其具体功能以及详细的实现步骤了&#xff0c;感兴趣的小伙伴直接&#xff1a;传送门 。该文章我就分享一下在该项目中学习到的一些知识点…

OJ项目【登录】——验证码、失败登录多次账户冻结、用户密码加密,我是如何实现的?

目录 前言 1、验证码 1.1、引入pom 1.2、前端核心代码 1.3、后端核心代码 2、账户冻结 2.1、思路&#xff1a; 2.2、核心代码示例&#xff1a; 3、密码加密——加盐算法 3.1、思路&#xff1a; 3.2、代码实现示例&#xff1a; 4、小结&#xff1a;展示我的项目 4…

在 Elasticsearch 中实现自动完成功能 2:n-gram

在第一部分中&#xff0c;我们讨论了使用前缀查询&#xff0c;这是一种自动完成的查询时间方法。 在这篇文章中&#xff0c;我们将讨论 n-gram - 一种索引时间方法&#xff0c;它在基本标记化后生成额外的分词&#xff0c;以便我们稍后在查询时能够获得更快的前缀匹配。 但在此…

MySQL InnoDB引擎深入学习的一天(InnoDB架构 + 事务底层原理 + MVCC)

目录 逻辑存储引擎 架构 概述 内存架构 Buffer Pool Change Buffe Adaptive Hash Index Log Buffer 磁盘结构 System Tablespace File-Per-Table Tablespaces General Tablespaces Undo Tablespaces Temporary Tablespaces Doublewrite Buffer Files Redo Log 后台线程 事务原…

30天工作量,推荐4个ai写作生成器工具,一键搞定!

全新升级&#xff01;畅销热门AI写作工具盘点40强&#xff0c;助你一键呈现顶尖文案&#xff01; AI写作工具&#xff0c;引领时代潮流&#xff0c;让办公生活更高效&#xff01;小编特意整理了市面上最好用的AI写作工具&#xff0c;共计40款&#xff01;你使用过哪些&#xff…

【JAVA-Day45】Java常用类StringBuffer解析

Java常用类StringBuffer解析 Java常用类StringBuffer解析一、什么是StringBuffer类二、StringBuffer类的方法2.1 append方法2.2 insert方法2.3 delete方法2.4 replace方法2.5 reverse方法2.6 toString方法2.7 capacity方法2.8 length方法 三、StringBuffer类的应用场景深入了解…

选择适合自身业务的HTTP代理有哪些因素决定?

相信对很多爬虫工作者和数据采集的企业来说&#xff0c;如何选购适合自己业务的HTTP代理是一个特别特别困扰的选题&#xff0c;市面上那么多HTTP代理厂商&#xff0c;好像这家有这些缺点&#xff0c;转头又看到另外一家的缺点&#xff0c;要找一家心仪的仿佛大海捞针。今天我们…

【音视频|ALSA】SS528开发板编译Linux内核ALSA驱动、移植alsa-lib、采集与播放usb耳机声音

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

二、深度测试(Z Test)

1.是什么 ①从渲染管线出发 ②书面上理解 所谓深度测试&#xff0c;就是针对当前对象在屏幕上&#xff08;更准确的说是frame buffer&#xff09;对应的像素点&#xff0c;讲对象自身的深度值与当前该像素点缓存的深度值进行比较&#xff0c;如果通过了&#xff0c;本对象再改…

使用 Github Actions 工作流自动部署 Github Pages

GitHub-Actions actions顾名思义就是一堆动作&#xff0c;是一个持续集成服务&#xff0c;持续集成包含了拉代码、运行测试、编译代码、登录远程服务器&#xff0c;发布到第三方服务等等的操作&#xff0c;GitHub将这些操作称为actions。 概念&#xff1a;Workflows, Events,…

【Java学习之道】网络编程的基本概念

引言 这一章我们将一同进入网络编程的世界。在开始学习网络编程之前&#xff0c;我们需要先了解一些基本概念。那么&#xff0c;我们就从“什么是网络编程”这个问题开始吧。 一、网络编程的基本概念 1.1 什么是网络编程 网络编程&#xff0c;顾名思义&#xff0c;就是利用…