QT(4)-QAbstractItemView

news2024/11/21 0:38:54

QAbstractItemView

  • 1 说明
  • 2 常用函数
    • 2.1 交替行颜色
      • 2.1.1 alternatingRowColors
      • 2.1.2 setAlternatingRowColors
    • 2.2 autoScroll
      • 2.2.1 hasAutoScroll
      • 2.2.2 setAutoScroll
    • 2.3 autoScrollMargin
      • 2.3.1 autoScrollMargin
      • 2.3.2 setAutoScrollMargin
    • 2.4 defaultDropAction
      • 2.4.1 setDefaultDropAction
      • 2.4.2 defaultDropAction()
    • 2.5 dragDropMode
      • 2.5.1 dragDropMode
      • 2.5.2 setDragDropMode
    • 2.6 拖放行为
      • 2.6.1 setDragDropOverwriteMode
      • 2.6.2 dragDropOverwriteMode
    • 2.7 是否支持拖动
      • 2.7.1 dragEnabled
      • 2.7.2 setDragEnabled
    • 2.8 编辑
      • 2.8.1 editTriggers()
      • 2.8.2 setEditTriggers
    • 2.9 水平(垂直)滚动模式
    • 2.10 项目图标大小
    • 2.11 选择行为
    • 2.12 选择模式
    • 2.13 拖放指示器
    • 2.14 Tab导航键
    • 2.15 文本省略模式
    • 2.16 选择项目
  • 3 信号
    • 4 槽函数
      • 4.1 公有槽函数
        • 4.1.1 clearSelection()
        • 4.1.2 edit
        • 4.1.3 reset()
        • 4.1.4 scrollToBottom
        • 4.1.5 scrollToTop
        • 4.1.6 selectAll()
        • 4.16.7 :setCurrentIndex

1 说明

QAbstractItemView 是 Qt 中用于显示模型数据的基础视图类。它是一个抽象类,无法直接使用,但可以通过继承它来创建自定义视图类。它为您提供了一组基本的用于显示和编辑模型数据的功能,并允许您对视图的外观和行为进行定制。需要使用它的具体子类之一,如 QListView、QTableView 或 QTreeView 等。

2 常用函数

2.1 交替行颜色

2.1.1 alternatingRowColors

bool alternatingRowColors() const
如何表格被设置成交替行颜色就返回true,否则返回false

2.1.2 setAlternatingRowColors

void setAlternatingRowColors(bool enable)
设置表格是否交替行颜色

2.2 autoScroll

2.2.1 hasAutoScroll

bool hasAutoScroll() const
此属性保存是否启用拖动移动事件中的自动滚动

2.2.2 setAutoScroll

void setAutoScroll(bool enable)
如果这个属性被设置为true(默认值),如果用户在视口边缘的16个像素范围内拖动,QAbstractItemView会自动滚动视图的内容。如果当前项发生变化,则视图将自动滚动以确保当前项完全可见。

此属性仅在视口接受drops时有效。自动滚动通过将此属性设置为false来关闭。

2.3 autoScrollMargin

2.3.1 autoScrollMargin

int autoScrollMargin() const
返回自动滚动区域的大小

2.3.2 setAutoScrollMargin

void setAutoScrollMargin(int margin)
设置自动滚动区域的大小

2.4 defaultDropAction

2.4.1 setDefaultDropAction

void setDefaultDropAction(Qt::DropAction dropAction)
用于设置默认的拖放操作。拖放操作是指在项目视图中拖动项目并放置到另一个位置的操作。例如,在表格中,拖放操作可以用于移动行或列,或者从一个表格拖放到另一个表格中。

2.4.2 defaultDropAction()

Qt::DropAction defaultDropAction() const
返回默认的拖拽的效果

enum Qt::DropAction
flags Qt::DropActions
在这里插入图片描述

2.5 dragDropMode

此属性保存视图将执行的拖放事件

2.5.1 dragDropMode

QAbstractItemView::DragDropMode dragDropMode() const
返回拖放的样式

2.5.2 setDragDropMode

void setDragDropMode(QAbstractItemView::DragDropMode behavior)
设置拖放的样式
在这里插入图片描述

2.6 拖放行为

此属性保存视图的拖放行为

2.6.1 setDragDropOverwriteMode

void setDragDropOverwriteMode(bool overwrite)

函数接收一个 bool 类型的参数,表示是否覆盖原始数据。如果参数值为 true,则表示在拖放时会覆盖原始数据;如果参数值为 false,则表示在拖放时会在原始数据后插入新数据。

默认值是false,就像QListView和QTreeView子类一样。另一方面,在QTableView子类中,属性被设置为true。

注意:这不是为了防止项目被覆盖。flags()的模型实现应该通过不返回来做到这一点

2.6.2 dragDropOverwriteMode

bool dragDropOverwriteMode() const
返回是否覆盖原始数据

2.7 是否支持拖动

2.7.1 dragEnabled

bool dragEnabled() const
返回是否支持拖动

2.7.2 setDragEnabled

void setDragEnabled(bool enable)
设置是否支持拖动,效果相当于setDragDropMode(QAbstractItemView::DragOnly)

2.8 编辑

2.8.1 editTriggers()

QAbstractItemView::EditTriggers editTriggers() const
返回编辑触发器的类型

2.8.2 setEditTriggers

void setEditTriggers(QAbstractItemView::EditTriggers triggers)
设置编辑触发器的模式,可以使用或选择多个

在这里插入图片描述

2.9 水平(垂直)滚动模式

QAbstractItemView::ScrollMode horizontalScrollMode() const
返回水平滚动的模式
void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode)
设置水平滚动的模式
void resetHorizontalScrollMode()
重置水平滚动的模式

QAbstractItemView::ScrollMode verticalScrollMode() const
返回垂直滚动的模式
void setVerticalScrollMode(QAbstractItemView::ScrollMode mode)
设置垂直滚动的模式
void resetVerticalScrollMode()
重置垂直滚动的模式

在这里插入图片描述

2.10 项目图标大小

QSize iconSize() const
返回项目图标的大小
void setIconSize(const QSize &size)
设置图标的大小,QSize 类是一个封装宽度和高度的类,它可以通过构造函数或静态函数创建。

void iconSizeChanged(const QSize &size) signal
信号,当图标大小发生变化时触发

QTableView
QStandardItemModel *model = new QStandardItemModel(2, 2);
// 设置模型的第一行第一列的项目的图标
QModelIndex index = model->index(0, 0);
QIcon icon(":/icons/file.png");
model->setData(index, icon, Qt::DecorationRole);
table->setIconSize(QSize(32, 32));

2.11 选择行为

QAbstractItemView::SelectionBehavior selectionBehavior() const
返回选择的行为
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)
设置选择的行为
在这里插入图片描述

2.12 选择模式

QAbstractItemView::SelectionMode selectionMode() const
返回选择模式
void setSelectionMode(QAbstractItemView::SelectionMode mode)
设置选择模式

在这里插入图片描述

  • NoSelection:不可选择任何项目。
  • SingleSelection:只能选择一个项目。
  • MultiSelection:可以选择多个项目。 用按住鼠标,只通过单击也可以实现选择多个项目
  • ExtendedSelection:可以通过按住Shift或Ctrl键来选择多个项目。
  • ContiguousSelection:可以选择一个连续的项目范围。

2.13 拖放指示器

bool showDropIndicator() const
返回是否显示拖放指示器
void setDropIndicatorShown(bool enable)
设置是否显示拖放指示器

拖放指示器:就是你拖放到哪一个单元格,那个单元格边框加粗,方便辨别

2.14 Tab导航键

bool tabKeyNavigation() const
返回是否启用Tab导航键
void setTabKeyNavigation(bool enable)
设置是否启用Tab导航键

在项目视图中启用Tab键导航后,用户可以使用Tab键来在项目之间导航,并使用Shift + Tab键来进行反向导航。

2.15 文本省略模式

Qt::TextElideMode textElideMode() const
返回文本省略模式
void setTextElideMode(Qt::TextElideMode mode)
设置文本省略模式
在这里插入图片描述
 请注意,当文本在项目视图中的可用空间不足时,才会显示省略号。

2.16 选择项目

void QAbstractItemView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) [pure virtual protected]
受保护的虚函数
用于设置列表视图中的选择。该函数有两个参数:

  • rect表示要选择的项目所在的矩形区域。
  • flags表示选择的模式,可以是下列值的组合
    • QItemSelectionModel::Clear:清除当前选择的所有项目。
    • QItemSelectionModel::Select:选择指定区域内的所有项目。
    • QItemSelectionModel::Deselect:取消选择指定区域内的所有项目。
    • QItemSelectionModel::Toggle:切换指定区域内项目的选择状态。
QRect rect(1, 2, 1, 3);
ui->listView->setSelection(rect, QItemSelectionModel::Clear | QItemSelectionModel::Select);

void QAbstractItemView::selectAll() virtual slot
虚拟槽函数
它的作用是选择列表视图中的所有项目

3 信号

void QAbstractItemView::activated(const QModelIndex &index) 
当用户双击或者按下回车键选择一个项目时,该信号会被触发。该信号携带了一个QModelIndex类型的参数,表示被选择的项目的索引。如何激活道具取决于平台;例如,通过单点或双击项目,或当项目是当前时按返回或进入键。在win10测试时候只有按下回车键才会触发

connect(ui->tableView, &QAbstractItemView::activated, this, [this] (const QModelIndex &index) {
    QMessageBox::information(this, "Information", "Item activated: " + index.data().toString());
});

void QAbstractItemView::clicked(const QModelIndex &index)
它的作用是在用户单击列表视图中的项目时发出信号。clicked信号是所有QAbstractItemView的子类都支持的。单击任何项目都会触发

void QAbstractItemView::doubleClicked(const QModelIndex &index)
双击鼠标按钮时发出此信号。鼠标双击的项目由index指定。只有当索引有效时才发出信号。

void QAbstractItemView::entered(const QModelIndex &index)
当鼠标光标进入index指定的项时发出此信号。要使该特性工作,需要启用鼠标跟踪(ui->tableView->setMouseTracking(true);)。

void iconSizeChanged(const QSize &size)
当图标大小发生变化是触发该信号

void QAbstractItemView::pressed(const QModelIndex &index)
鼠标按下触发

void QAbstractItemView::viewportEntered()
当鼠标光标进入视口时发出这个信号。要使该特性工作,需要启用鼠标跟踪。
在这里插入图片描述
红色区域是index指定的项,蓝色区域是视图

4 槽函数

4.1 公有槽函数

4.1.1 clearSelection()

void QAbstractItemView::clearSelection() slot[]
槽函数,用于清除当前选择的所有项目。这个函数不需要任何参数,它直接清除当前选择的项目。clearSelection函数只会清除用户选择的项目,而不会清除列表视图中的所有项目。

4.1.2 edit

void QAbstractItemView::edit(const QModelIndex &index)
开始编辑与给定索引对应的项(如果该项是可编辑的)。

4.1.3 reset()

void QAbstractItemView::reset() 虚拟函数
重置视图的内部状态。
警告:此函数将重置打开的编辑器,滚动条位置,选择等。现有的更改将不会被提交。如果您希望在重置视图时保存更改,您可以重新实现此函数,提交更改,然后调用超类的实现。

4.1.4 scrollToBottom

void QAbstractItemView::scrollToBottom()
将视图滚动到底部。

4.1.5 scrollToTop

void QAbstractItemView::scrollToTop()
将视图滚动到顶部。

4.1.6 selectAll()

void QAbstractItemView::selectAll() virtual slot
虚拟槽函数
它的作用是选择列表视图中的所有项目

4.16.7 :setCurrentIndex

void QAbstractItemView::setCurrentIndex(const QModelIndex &index)
将当前项设置为索引处的项。

除非当前选择模式为“不选择”,否则该项也会被选中。注意,这个函数还会更新用户执行的任何新选择的起始位置。

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

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

相关文章

python--飞机大战

实现功能: 1:飞机的移动,发射子弹,手雷,生命值,生命条 2:敌飞机有3种形态(小,中,大)不同的飞机大小不一样,生命值不一样&#xff0c…

基于springboot+mybatis+mysql+vue在线订餐系统

基于springbootmybatismysqlvue在线订餐系统一、系统介绍二、功能展示1.主页(用户)2.菜单(用户)3.用户注册(用户)4.用户登陆(用户)5.我的订单(用户)6.我的购物车(用户)7.首页(管理员)8.用户管理(管理员)9.商品管理(管理员)9.订单管理(管理员)10.评论管理(管理员)三、获取源码一…

c++ 类型的转换

文章目录1. C语言中的类型转换1.1 隐式转换1.2 显示转换2. C的类型转换2.1 static_cast2.2 reinterpret_cast2.3 const_cast2.4 dynamic_cast3. 常见面试题前言: C给出了四种类型转换,这是做出的一些规范,为了减少隐式转换。隐式转换的问题&a…

JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK14特性讲解】

JDK各个版本特性讲解-JDK14特性 一、Java14概述 Oracle在2020年3月17日宣布JAVA14 全面上市,JAVA14通过每六个月发布一次新功能,为企业和开发人员社区提供增强功能,继续了Oracle加快创新的承诺. 最新的JAVA开发工具包提供了新功能,其中包括两项备受期待的新预览功能,实例匹配的…

【Redis】分布式限流与Redis实现限流的四种方式(Redis专栏启动)

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

MHA高可用及故障切换

目录 一、MHA的概述 1、 MHA的概念 2.MHA 的组成 3.MHA 的特点 二、搭建 MySQL MHA的操作步骤 1、实验思路: 1.1、MHA架构 1.2、故障模拟 2、环境准备 3、修改 Master、Slave1、Slave2 节点的主机名 4、修改 Master、Slave1、Slav…

基于java+springboot+mybatis+vue+mysql的农产品销售商城网站

项目介绍 农产品销售成为了很多农产品商家的一项重要的创收项目。传统的销售方式采用了摆摊销售和市场的农产品的批发,在销售农产品方面不是很方便,因此采用了网络的方式进行销售。也是电子商务发展今天的一种趋势,建立了网站,前…

WebSocket——SpringBoot+Vue3+TS+SockJS+STOMP简单连接使用

WebSocket——SpringBootVue3TSSockJSSTOMP简单连接使用本文视频以及相关资源关于WebSocket文档什么时候使用WebSocketWebSocket连接头服务器返回状态码客户端使用技术Github地址npm安装为什么要安装sockjs的.d.ts文件常用方法1.连接2.关闭连接3.发送消息4.设置订阅构建1.创建w…

【Redis】Redis布隆过滤器工作原理与实战(Redis专栏启动)

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

判断质数复习与分解质因数

TIPS 1. 之前我们讲到比方说要得到一个整数(十进制形式)的每一位数字,就需要把这个整数先%10得到最低位的数字,然后呢再把这个整数/10更新一下,然后呢就这么循环往复直到最终这个不断更新的整数为0跳出循环。那如果这…

深度学习-神经网络(Pytorch应用)

文章目录简介卷积层池化层激活层线性层前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 上图摘自网络 受生物神经网络的启发,每个神经元与其他神经元相连,当…

InfluxDB时序数据库-笔记-更新中

本笔记由在Bilibili学习的尚硅谷教学视频后整理得来 文章目录一、InfluxDB基础概念1.1InfluxDB是什么1.2为什么选择InfluxDB而不选择关系型数据库1.3下载安装1.4Promethus数据格式1.5时序数据中的数据模型1.6与时间标准相关的知识二、Flux语言2.1初识Flux语言2.2Flux基本语法三…

献上SpringBoot核心笔记,简直就是血赚

市面上真正适合学习的SpringBoot资料太少,有的书或资料虽然讲得比较深入,但是语言晦涩难懂,大多数人看完这些书基本都是从入门到放弃。学透SpringBoot难道就真的就没有一种适合大多数同学的方法吗? 很多SpringBoot相关的知识点与…

Java+MySQL学生选课与成绩管理系统(数据库版)

一、项目要求 学生选课与成绩管理系统(数据库版) 1、配置MySQL数据库 2、利用java+MySQL实现系统各个功能 3、功能包括: (1)系统交互界面,如下图所示 (2)学生信息的增删改查。学生属性包括学号(唯一),姓名,专业。 (3)课程信息的增删改查。课程属性包括编号…

96-114-mysql-高级篇-架构篇

96-mysql-高级篇: 推荐网站 mysql学习网站:https://www.bilibili.com/video/BV1iq4y1u7vj?p109&vd_source39a1ba1654411bc9ab90f6f2926600b7 mysql:https://dev.mysql.com/doc/refman/8.0/en/ 算法:https://www.cs.usfca.…

JoyStick Shield连接Nokia 5110--Arduino

SpaceTrash游戏是一个简单的射击游戏,您可以在其中控制宇宙飞船,并通过移动或爆破(使用激光)来避免漂浮在周围的小行星的碰撞。该游戏是u8g2图形库附带的示例,该图形库通常用于连接具有SPI或I2C协议的各种单色8位显示器…

非零基础自学Golang 第1章 走进Go 1.4 常用软件及网站 1.5 小结

非零基础自学Golang 文章目录非零基础自学Golang第1章 走进Go1.4 常用软件及网站1.4.1 开发工具【IDE 或编辑器】1.4.2 代码管理工具1.4.3 其他工具1.4.4 网站资源1.5 小结第1章 走进Go 1.4 常用软件及网站 1.4.1 开发工具【IDE 或编辑器】 工欲善其事必先利其器。 Go开发工…

基于java+springboot+mybatis+vue+mysql的电动车辆充电桩管理系统

项目介绍 随着我国汽车行业的不断发展,电动汽车已经开始逐步的领导整个汽车行业,越来越多的人在追求环保和经济实惠的同时开始使用电动汽车,电动汽车和燃油汽车最大的而不同就是 需要充电,同时我国的基础充电桩也开始遍及了大多数…

机器人开发--SICK激光雷达系列

机器人开发--SICK激光雷达系列1 介绍2 TiM系列2.1 TiM510参数测量方法协议请求一次数据(应答直接携带数据)请求持续数据(应答收到指令,数据持续发送)数据内容参考1 介绍 SICK 是国际先进的工业用传感器应用程序解决方…

016 | 乡村振兴战略下农村宅基地有偿退出现状 | 大学生创新训练项目申请书 | 极致技术工厂

(一)研究目的 随着国家城市化进程的加快,城市和农村的具体情况都发生了巨大变化,大量的问题随之产生,在农村经济中,宅基地的有偿退出矛盾尤为突出。在当前的时代发展背景下,我国农村宅基地有偿…