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

qt QListView详解

1、概述

QListView 是 Qt 框架中的一个视图类,用于展示模型中的数据。它基于 QAbstractItemView,支持多种视图模式,如列表视图(List View)、图标视图(Icon View)等。QListView 是模型/视图框架的一部分,通常与 QStandardItemModel 或从 QAbstractItemModel 派生的自定义模型一起使用。在这种模型-视图架构中,数据存储在模型中,而视图负责呈现该数据。QListView 提供了灵活的显示模式和高度的自定义能力,使得开发者可以根据需要选择最适合的呈现方式。

2、重要方法

QListView 提供了多种方法来管理和展示数据,以下是一些重要的方法:

  • setSelectionMode:设置选择模式,如单选(SingleSelection)、多选(MultiSelection)等。
  • setEditTriggers:设置编辑触发器,决定何时可以编辑列表项。
  • setFocusPolicy:设置焦点策略,决定视图是否可以接受焦点。
  • setModel:设置数据模型,将数据模型与视图关联起来。
  • viewMode 和 setViewMode:获取和设置视图模式,如列表模式(ListMode)和图标模式(IconMode)。
  • setGridSize:在图标模式下设置网格大小。

此外,QListView 还支持通过委托(delegates)自定义视图中项的外观和交互方式,这通常通过重写 QStyledItemDelegate 类的相关方法来实现。

3、重要信号

QListView 发射多种信号来响应用户的操作,以下是一些重要的信号:

  • clicked:单击某项时发射此信号。
  • doubleClicked:双击某项时发射此信号。
  • activated:当用户激活某个项目时发射此信号。
  • entered:当鼠标光标进入某个项目时发射此信号。
  • iconSizeChanged:在视图可见时设置图标大小时发射此信号。
  • indexesMoved:在视图中移动索引时发射此信号。
  • pressed:按下鼠标按钮时发射此信号。
  • viewportEntered:当鼠标光标进入视图时发射此信号。

这些信号允许开发者在用户与 QListView 交互时执行特定的操作。

4、视图模式和布局方向

ViewMode

QListView::ViewMode 枚举定义了视图模式:

  • QListView::ListMode:列表模式。
  • QListView::IconMode:图标模式。

Flow
QListView::Flow枚举定义了项目布局方向:

  • QListView::LeftToRight:从左到右布局。
  • QListView::TopToBottom:从上到下布局。
#include <QApplication>  
#include <QListView>  
#include <QStandardItemModel>  
#include <QDebug>  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  // 创建一个 QListView 实例  QListView listView;  // 创建一个模型并添加一些数据  QStandardItemModel model;  for (int i = 0; i < 10; ++i) {  QStandardItem *item = new QStandardItem(QString("Item %1").arg(i));  item->setCheckable(true); // 显示复选框  item->setCheckState(Qt::Unchecked); // 设置复选框状态  model.appendRow(item);  }  // 将模型设置给 QListView  listView.setModel(&model);  // 设置选择模式为单选模式  listView.setSelectionMode(QAbstractItemView::SingleSelection);  // 连接 clicked 信号到槽函数  QObject::connect(&listView, &QListView::clicked, [&](const QModelIndex &index) {  QVariant value = model.data(index, Qt::DisplayRole);  qDebug() << "Clicked item:" << value.toString();  });  // 显示 QListView  listView.show();  return app.exec();  
}

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

           

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

相关文章:

  • 287. 寻找重复数
  • 2024年最受欢迎的编程语言
  • C++ 线程初始化编译报错
  • [MySQL]视图
  • Windows Server2012 R2搭建NFS服务器
  • SQL题:使用hive查询各类型专利top 10申请人,以及对应的专利申请数
  • 使用sealos部署的集群在部署metrics-server时日志x509
  • WPF怎么通过RestSharp向后端发请求
  • promise的用法以及注意事项,看了这篇你就会了
  • vue3如何使用pinia设置全局状态,附常见面试题
  • lerna+umi ‘max‘ 不是内部或外部命令,也不是可运行的程序
  • 美格智能5G车规级通信模组: 5G+C-V2X连接汽车通信未来十年
  • 「C/C++」C/C++ 指针篇 之 指针运算
  • 计算机网络网络层笔记
  • 长亭那个检测能力超强的 WAF,出免费版啦
  • rabbitMQ RabbitTemplate 发送消息
  • 本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。
  • C语言文件基础概念的理解(一)
  • C++ lambda 匿名函数
  • 基于python的简单web服务器示例
  • 02- 模块化编程-006 ADC0808数码显示对比
  • 又发现了Mac妙控鼠标的新使用方法
  • Webserver(4.6)poll和epoll
  • LVGL 与 QT
  • 如何选择最适合的项目管理软件?2024年大厂首选7款工具盘点
  • 【数据结构】选择排序——选择排序 和 堆排序
  • P11229 [CSP-J 2024] 小木棍
  • 【学习笔记】SAP ABAP——OPEN SQL(一)【SELECT语句】
  • SQL注入(1)
  • 在AI时代,如何解决人的工作岗位被AI替代的问题?