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

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.kler.cn/a/382944.html

相关文章:

  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:数据存储分区的艺术与实践(下)(2/30)
  • suanfabiji
  • 基于微信的追星小程序+ssm(lw+演示+源码+运行)
  • 解锁炎症和肿瘤免疫治疗新靶点:TREM1&TREM2
  • 【自用】时序数据库、时序数据库,IOTDB官方文档笔记
  • 实现GUI界面中的logo图片的编码与隐藏
  • [前端] 为网站侧边栏添加搜索引擎模块
  • 通过ChatGPT轻松制作个性化GPTs应用
  • Latex图片展示:一行与一列
  • 香港服务器网络延迟的测量指标包括哪些?
  • Bartender 5 for Mac 菜单栏管理软件 安装教程【保姆级教程,操作简单小白轻松上手使用】
  • 哈夫曼树和哈夫曼编码与译码
  • 《ASP.Net Core技术内幕与项目实战》读书笔记1
  • 全平台设置jetbrains mono字体
  • #渗透测试#SRC漏洞挖掘# 操作系统-Linux系统基础02之Openssl、软连接与硬连接、用户账号数据库
  • HiveMetastore 的架构简析
  • Node.js回调函数以及事件循环使用介绍(基础介绍 三)
  • spring-boot(thymeleaf前端框架,简单了解)、( 跨域请求)
  • 玩转「HF/魔搭/魔乐」平台
  • 解决 Ubuntu ‘InRelease is not valid yet’ 报错:内网源 apt update 详细教程
  • 端侧小模型新星,SmolLM2 1.7B击败了Llama 3.2、Qwen 2.5
  • 基础算法练习--滑动窗口(日更中)
  • 青少年编程与数学 02-003 Go语言网络编程 12课题、Go语言Soket编程
  • RabbitMQ 管理平台(控制中心)的介绍
  • SpringBoot健身房管理:提升效率与体验
  • STM32中,在哪些时候需要配置复用推挽/开漏输出?