Qt应用开发(基础篇)——头部视图 QHeaderView

news2025/1/9 5:13:14

一、前言

        QHeaderView类继承于QAbstractItemView,为项目视图(QTableViewQTreeView等)提供标题行或标题列。

        树结构视图 QTreeView

        表格视图 QTableView

        视图基类 QAbstractItemView

        QHeaderViewsection的概念,表示整条标题栏的一个个小部分,但是叫“部分”语句经常不通顺,所以下文都称呼为“项”。

        QHeaderView显示视图所需要的标题栏,例如QTableViewQTreeView类,本身它也是Model/View框架的一部分。视图中要设置头部数据可以使用以下三种方式。

model->setHorizontalHeaderLabels(QStringList()<<"title”);
model->setHeaderData(0,Qt::Horizontal,"title");
model->setHorizontalHeaderItem(0,new QStandardItem("title"));

        QHeaderView每一项都有自己的水平对齐orientation和项索引序号sections number,通过count()函数可以知道标题头的项个数,索引从0开始。使用resizeSection()moveSection()hideSection()、showSection()对节进行调整、移动、隐藏和显示。

ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch)

        QHeaderView每一项可以是固定的,也可以使用setSectionsMovable()设置为可移动。如果需要手动调整每项的大小,需要使用setSectionsClickable()设置为可点击并setSectionResizeMode()设置调整大小的行为。如果用户移动了一个项,会触发sectionMoved()信号,如果用户调整了一项的大小,则会触发sectionResized()信号,而当鼠标点击时,则会触发sectionClicked()信号和sectionhandledoubleclick()信号。头文件也会发出sectionCountChanged()信号。

二、QHeaderView

1、属性

1)cascadingSectionResizes

        该属性表示当用户调整大小的项达到最小大小时,是否将调整大小级联到下一项。该属性仅当ResizeMode设置为Interactive生效。默认值为false。

bool cascadingSectionResizes() const
void setCascadingSectionResizes(bool enable)
2)defaultAlignment

        该属性表示标题头文本的对齐方式。

Qt::Alignment defaultAlignment() const
void setDefaultAlignment(Qt::Alignment alignment)
3)defaultSectionSize

        该属性表示头每项在调整之前的默认大小,该属性只有当ResizeMode设置为Interactive或者Fixed生效。

int defaultSectionSize() const
void setDefaultSectionSize(int size)
void resetDefaultSectionSize()
4)firstSectionMovable

        该属性表示第一项是否可以被用户移动。在QTreeView中,第一项保存树结构,因此默认情况下是不可移动的,即使在setSectionsMovable(true)之后也是如此。要让此方法生效,需使用了setSectionsMovable(true)。

bool isFirstSectionMovable() const
void setFirstSectionMovable(bool movable)
5)highlightSections

        该属性表示是否头部项要跟随视图(tableview\treeview)选中的项一起高亮。

bool highlightSections() const
void setHighlightSections(bool highlight)
6)maximumSectionSize

        该属性表示项的最大尺寸。

int maximumSectionSize() const
void setMaximumSectionSize(int size)
7)minimumSectionSize

        该属性表示项的最小尺寸。

int minimumSectionSize() const
void setMinimumSectionSize(int size)
8)showSortIndicator

        该属性表示是否显示排序指示。

bool isSortIndicatorShown() const
void setSortIndicatorShown(bool show)
9)stretchLastSection

        该属性表示确定头文件中最后一个可见项是否占用了所有可用空间,默认值为false。

bool stretchLastSection() const
void setStretchLastSection(bool stretch)

2、公共方法

1)count

        返回项的数量。

int count() const
2)hiddenSectionCount

        返回被隐藏的项个数。

int hiddenSectionCount() const
3)isSectionHidden

        返回索引下的项是否被隐藏。

bool isSectionHidden(int logicalIndex) const
4)setSectionHidden

       设置索引下的项被隐藏或者显示。

void setSectionHidden(int logicalIndex, bool hide)
5)hideSection

       隐藏索引下的项。

void hideSection(int logicalIndex)
6)showSection

        显示索引下的项。

void showSection(int logicalIndex)
7)length

        返回标题方向的长度。

int length() const
8)offset

        返回标头的偏移量,这是标头的最左(或垂直标头的最上)可见像素。

int offset() const
9)setOffset

        设置标头的偏移量。

void setOffset(int offset)
10)resizeContentsPrecision

        表头分区大小使用的精度,精度是指表头分区调整大小时可以接受的最小增量。

int resizeContentsPrecision() const
11)setResizeContentsPrecision

        设置调整表头分区大小时使用的精度,较低的值将提供不太准确但快速的自动调整大小,而较高的值将提供更准确的调整大小,但可能很慢。

        默认为1000,表示具有自动调整大小的水平列在执行自动调整大小时将在计算时查看最多1000行。特殊值0表示它将只查看可见区域。特殊值-1表示查看所有元素。

void setResizeContentsPrecision(int precision)
12)sectionResizeMode

        返回索引下项的调整大小策略。

QHeaderView::ResizeMode sectionResizeMode(int logicalIndex) const
13)setSectionResizeMode

        设置项的调整大小策略。

void setSectionResizeMode(QHeaderView::ResizeMode mode)
QHeaderView::ResizeMode描述
Interactive用户可以调整部分的大小。也可以使用resizeSection()调整该节的大小。
Fixed用户无法调整节的大小。只能使用resizeSection()调整节的大小。
StretchQHeaderView将自动调整部分大小以填充可用空间。该大小不能由用户或以编程方式更改。
ResizeToContentsQHeaderView将根据整个列或行的内容自动调整节的大小到最佳大小。该大小不能由用户或以编程方式更改。

14)resizeSection

        将logicalIndex指定的项大小调整为以像素为单位测量的大小。size参数必须大于等于零。size可以设置为0,不建议这么做,因为可以使用hideSection()隐藏。

void resizeSection(int logicalIndex, int size)
15)restoreState

        恢复视图的状态,如果状态被恢复,这个函数返回true,否则返回false。

bool restoreState(const QByteArray &state)
16)saveState

        保存视图的状态。

QByteArray saveState() const
17)sectionPosition

        返回逻辑索引下的节位置。

int sectionPosition(int logicalIndex) const
18)sectionSize

        返回逻辑索引下的节的宽度或者高度。

int sectionSize(int logicalIndex) const
19)sectionSizeHint

        用于检索表头分区的大小提示。它可以用来获取表头分区的大小提示,即表头分区的期望大小(相对于表头内容而言)。

int sectionSizeHint(int logicalIndex) const
20)sectionViewportPosition

        返回给定logicalIndex的项视图位置。

int sectionViewportPosition(int logicalIndex) const
21)sectionsClickable

        返回项是否可点击。

bool sectionsClickable() const
22)setSectionsClickable

        设置项是否可点击

void setSectionsClickable(bool clickable)
23)sectionsMovable

        返回项是否可移动。

bool sectionsMovable() const
24)setSectionsMovable

        设置项是否可移动。

void setSectionsMovable(bool movable)
25)sortIndicatorOrder

        返回排序规则。

Qt::SortOrder sortIndicatorOrder() const
26)setSortIndicator

        设置排序规则,正序Qt::AscendingOrder和倒序Qt::DescendingOrder。

void setSortIndicator(int logicalIndex, Qt::SortOrder order)
27)stretchSectionCount

        返回设置为调整模式拉伸QHeaderView::Stretch的项数。

int stretchSectionCount() const
28)visualIndex

        返回由给定的logicalIndex指定的项的可视索引位置。

int visualIndex(int logicalIndex) const
29)visualIndexAt

        返回覆盖视窗中给定位置position的项的可视索引。

int visualIndexAt(int position) const
30)logicalIndex

        返回给定visualIndex位置的部分的logicalIndex。

int logicalIndex(int visualIndex) const
31)logicalIndexAt

        返回条件下的索引。

int logicalIndexAt(int position) const
int logicalIndexAt(int x, int y) const
int logicalIndexAt(const QPoint &pos) const

3、信号

1)geometriesChanged

        当头部的几何形状发生变化时触发该信号。

void geometriesChanged()
2)sectionClicked

        单击某项时触发该信号。

void sectionClicked(int logicalIndex)
3)sectionCountChanged

        当项的数量发生变化时,即当项被添加或删除时触发该信号。

void sectionCountChanged(int oldCount, int newCount)
4)sectionDoubleClicked

        当双击某项时触发该信号。

void sectionDoubleClicked(int logicalIndex)
5)sectionEntered

        当光标移动到某项上并且按下鼠标左键时触发该信号。

void sectionEntered(int logicalIndex)
6)sectionHandleDoubleClicked

        当双击某项时触发该信号。

void sectionHandleDoubleClicked(int logicalIndex)
7)sectionMoved

        这个信号是当某项被移动时触发该信号。

void sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex)
8)sectionPressed

       当按下某项时触发该信号。

void sectionPressed(int logicalIndex)
9)sectionResized

       当某项重新设置大小的时候触发该信号。

void sectionResized(int logicalIndex, int oldSize, int newSize)
10)sortIndicatorChanged

       当某项重新设置排序的时候触发该信号。

void sortIndicatorChanged(int logicalIndex, Qt::SortOrder order)

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

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

相关文章

为小公司申请企业邮箱的步骤和方法

对于小公司来说&#xff0c;拥有自己的企业邮箱不仅可以提高公司的专业形象&#xff0c;还可以更好地管理内部和外部的通信。小公司应该如何申请企业邮箱呢&#xff1f;以下是一份详尽的指南。 小公司应该如何申请企业邮箱呢&#xff1f;基本上由三步组成&#xff1a;确定自己的…

class的get和set

class的get和set 一、使用场景二、代码实现 一、使用场景 当我们需要在用户获取或设置实例某个属性的时候做一些附加的操作的时候&#xff0c;就能利用这个特性。 二、代码实现 class Person {#name #age 0 // 设置私有属性存储值&#xff0c;避免被外部修改constructor(na…

智能微秘书+FastGPT,打造你的超级微信助手!

自 ChatGPT 面世以来&#xff0c;它开创了一种交互方式的新革命&#xff0c;引领着技术与人类交互方式的全新演变。特别是在 GPT-3.5 全面开放 API 接口后&#xff0c;基于语言模型&#xff08;LLM&#xff09;的各种应用如雨后春笋般涌现&#xff0c;显示了无限的可能性和创新…

RabbitMQ的LazyQueue

在默认情况下&#xff0c;RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟。但在某些特殊情况下&#xff0c;这会导致消息积压&#xff0c;比如&#xff1a; 消费者宕机或出现网络故障消息发送量激增&#xff0c;超过了消费者处理速度消费者处理业务发生阻塞 一旦…

C51--基本认知

单片机基本认知&#xff1a; 1、什么是单片机 单片机是一种集成电路芯片。 把具有数据处理能力的中央处理器 CPU、随机存储器RAM、只读存储器ROM。 多种 I / O 口和中断系统、定时器/计数器等功能&#xff08;可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器…

JAVAEE初阶相关内容第十四弹--网络初识

写在前&#xff1a; 这一部分开启网络部分的相关知识&#xff0c;这一弹内容初始网络将主要进行网络相关知识的简单介绍&#xff0c;以及着重介绍协议、协议分层、OSI七层模型、TCP/IP五层模型、封装和分用。 需要认识协议&#xff0c;并知道协议的效果是什么&#xff1b;知道…

利用N点复数序列求2个N点实数序列的快速傅里叶变换

一、方法简介 通过一个点复数序列求出两个点实数序列的离散傅里叶变换&#xff0c;进一步提升快速傅里叶变换的效率。 二、方法详解 和是实数序列&#xff0c;且长度都为&#xff0c;定义复数序列&#xff1a; &#xff0c; 则序列和可表示为&#xff1a; 的离散傅…

LoRa与ZigBee有什么区别?

1、LoRa技术简介&#xff1a; 物联网应用中的无线技术有多种&#xff0c;可组成局域网或广域网。组成局域网的无线技术主要有2.4GHz的WiFi&#xff0c;蓝牙、Zigbee等&#xff0c;组成广域网的无线技术主要有2G/3G/4G等。这些无线技术&#xff0c;优缺点非常明显&#xff0c;可…

酷开系统 | 酷开科技让你放肆嗨唱,聆听内心最真实的声音

在这个喧嚣的城市里&#xff0c;每个人都像是一座孤岛&#xff0c;漂浮在茫茫人海之中&#xff0c;我们总是忙于奔波在各种琐事之间&#xff0c;渐渐忘记了内心深处的声音&#xff0c;我们压抑自己的情感&#xff0c;害怕被误解、被批评&#xff0c;然而真正的我们&#xff0c;…

利用FPGA和CPLD数字逻辑实现模数转换器

数字系统的嵌入式工程师熟悉如何通过使用FPGA和CPLD在其印刷电路板上将各种处理器&#xff0c;存储器和标准功能组件粘合在一起来实现其数字设计的“剩余”。除了这些数字功能之外&#xff0c;FPGA和CPLD还可以使用LVDS输入&#xff0c;简单的电阻电容器&#xff08;RC&#xf…

BricsCAD v24.1.05(CAD建模软件)

BricsCAD是一款强大的CAD软件&#xff0c;可以帮助用户进行二维和三维图形设计和建模。BricsCAD支持多种CAD格式&#xff0c;包括DWG、DXF、DGN和STL等&#xff0c;并且可以与AutoCAD兼容。BricsCAD还提供了多种工具和功能&#xff0c;可以让用户进行快速、精确的设计和建模。 …

理解 Git 的三个工作区:工作区、暂存区和版本库

文章目录 创建 Git 本地仓库配置Git认识⼯作区、暂存区、版本库添加⽂件--场景查看 .git ⽂件添加⽂件--场景⼆ 创建 Git 本地仓库 要提前说的是&#xff0c;仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制&#xff0c;就必须先创建⼀个仓库出来。创建⼀个 Gi…

VRRP与BFD的联动

今天的你和昨天的你相比是不是又进步了 一&#xff0c;现网中常用的技术&#xff08;vrrp与bfd&#xff09; VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;是一种网络协议&#xff0c;用于提高路由器的可靠性和容错性。它允许多个路由器共享一个虚拟 IP 地址…

如何注册微信小程序

如何注册微信小程序 前言 因为最近沉迷和朋友们一起下班去打麻将&#xff0c;他们推荐了一个计分的小程序&#xff0c;就不需要每局都转账或者用扑克牌记录了&#xff0c;但是这个小程序不仅打开有广告&#xff0c;各个页面都植入了广告&#xff0c;用起来十分不适。 于是我…

竞品价格怎么监测

品牌在做产品营销、产品定价时&#xff0c;除了要做好自身产品的研发设计外&#xff0c;需要非常了解市场&#xff0c;了解消费者偏好、了解竞品数据&#xff0c;通过对比分析&#xff0c;从而知道哪些价位的产品更受消费者喜爱&#xff0c;怎样设计产品更符合市场要求等&#…

LORA无纸温控记录仪测温不准

偏差特别很是大 测量不准缘故原由1&#xff1a; 当无纸记录仪采用热电偶温度传感器测温时&#xff0c;假如热电偶的冷端补偿不能真实反映冷端温度会产生偏差。 解决方法&#xff1a; 使冷端补偿传感器环境温度和接线端子环境温度接近&#xff0c;公司生产的无纸记录仪内置冷…

4.05 用户中心-订单状态和订单动向

详细内容&#xff1a; http://www.gxcode.top/code

MATLAB中zp2tf函数用法

目录 语法 说明 示例 质点弹簧系统的传递函数 zp2tf函数的功能是将零极点增益滤波器参数转换为传递函数形式。。 语法 [b,a] zp2tf(z,p,k) 说明 [b, a] zp2tf(z, p, k) 将一个分解的传递函数表示方式转换。 将单输入/多输出&#xff08;SIMO&#xff09;系统的多输出…

聚观早报 | 荣耀Magic Vs2首销;iQOO 12系列已入网

【聚观365】10月17日消息 荣耀Magic Vs2首销 iQOO 12系列已入网 三星Galaxy S24 Ultra跑分曝光 北京医保移动支付升级 现代和起亚新能源汽车在美销量超20万辆 荣耀Magic Vs2首销 荣耀推出了全新的Magic Vs2折叠屏机型&#xff0c;这是继最轻薄折叠屏荣耀Magic V2、最时尚…

尚硅谷Flink(四)处理函数

目录 &#x1f98d;处理函数 &#x1f412;基本处理函数 &#x1f412;按键分区处理函数&#xff08;KeyedProcessFunction&#xff09; &#x1f435;定时器&#xff08;Timer&#xff09;和定时服务&#xff08;TimerService&#xff09; // 1、事件时间的案例 // 2、处理…