`
tcspecial
  • 浏览: 913871 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

QTableView 切换折叠展开图标

    博客分类:
  • QT
阅读更多

    这段时间对MVC的使用和个人理解,发现MVC更侧重显示数据,对于数据的修改之类的操作,实现起来比较繁琐. 那么如何在QTableView切换节点折叠展开的图标呢 

 

一. QTreeWidget下的实现

      连接信号itemExpanded ( QTreeWidgetItem * item ) 和itemCollapsed ( QTreeWidgetItem * item ), 然后操作设置该节点图标 item->setIcon(); 几行代码就搞定了

 

二. QTableView下的实现

   在MVC中修改数据, 必须发射 dataChanged(index,index) 来通知模型更新数据, 也就是必须重新实现 QAbstractItemModel::setData(index,value,role), 在该方法中发现更新信号 

   1. 连接节点折叠展开信号 

connect(this,SIGNAL(expanded(const QModelIndex &)),this,SLOT(expand(const QModelIndex &)));
connect(this,SIGNAL(collapsed(const QModelIndex &)),this,SLOT(collapse(const QModelIndex &)));

void TableView::expand(const QModelIndex &index)
{
    pModel->setData(index,true,Qt::DecorationRole);
}

void TableView::collapse(const QModelIndex &index)
{
    pModel->setData(index,false,Qt::DecorationRole);
}

 

   2. 重新实现 QAbstractItemModel::setData(),通知视图刷新 

bool TagTreeModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
    if(index.isValid()&&role==Qt::DecorationRole)
    {
        bool pStatus=value.toBool();

	// 设置当前图标
        TreeItem *item=static_cast<TreeItem*>(index.internalPointer());
        item->setIcon(pStatus);

	// 发射dataChanged(index,index),确保视图刷新图标
	emit dataChanged(index,index);
        return true;
    }

    return false;
}

 

   效果如下:

   

 

 

  • 大小: 27.2 KB
分享到:
评论

相关推荐

    【Pyside资源】 基于 QGraphicsView、PySide6 实现可拖拽的矩形 demo 案例

    基于QGraphicsView和PySide6实现的可拖拽矩形demo案例是一个演示如何在图形视图中创建、操作和交互的基本示例。 这个demo将展示如何使用PySide6的图形视图框架来创建一个用户界面,用户可以在其中创建矩形对象,并...

    QFileSystemModel+QTableView显示自定义图标icon

    实现QFileSystemModel+QTableView创建文件管理系统,基于windows平台。 进一步优化该功能,为了适配嵌入式arm平台,实现QFileSystemModel的自定义修改图标功能。这样用户可以通过不同文件类型需求,自定义自己所要...

    QTableView+QComboBox简单使用

    QTableView+QComboBox简单使用。采用Qt代理的方式,用QComboBox做了指定列的代理。 功能: 1. 采用QComboBox作为QtableView某一列的代理 2. 可添加QtableView的项; 3. 可删除QtableView的项;

    QTableView同时显示自定义Checkbox和文件图标

    本文将详细讲解如何在`QTableView`中同时显示自定义的Checkbox和文件图标。 首先,我们需要创建一个自定义的模型类(`QAbstractTableModel`的子类),这个模型将负责处理数据以及与`QTableView`的交互。在模型类中...

    tableview表格的折叠

    - 折叠功能的核心在于跟踪每个单元格的展开/折叠状态,并根据这些状态来决定哪些单元格应该在视图中显示。 - 使用`indexPath`来唯一标识每个单元格,以便在用户交互时更新对应的数据源。 3. **数据模型设计** - ...

    QTableView显示自定义CheckBox

    在Qt框架中,`QTableView`是一个非常常用的控件,用于展示二维表格数据。而有时候,我们可能需要在表格的某一列中显示可选的复选框(CheckBox),以供用户进行选择操作。本篇文章将深入讲解如何在`QTableView`中实现...

    QTableView插入各种按钮

    在Qt框架中,QTableView是用于显示表格数据的控件,它是Qt Widgets模块的一部分,广泛应用于桌面应用开发。QTableView可以结合QAbstractItemModel或QStandardItemModel来展示数据,并允许用户进行交互,如编辑、排序...

    QT QTableView用法总结

    QT QTableView用法总结 QT QTableView是QT框架中的一种视图控件,用于显示表格数据。下面我们将详细介绍QT QTableView的用法,包括设置表头、设置表格属性、动态添加行等。 一、设置表头 在使用QT QTableView之前...

    Qt QTableView插入控件,qss设计

    在Qt框架中,QTableView是用于显示表格数据的控件,它是Qt Widgets模块的一部分,广泛应用于桌面应用开发中。QTableView允许用户以表格形式展示结构化的数据,支持数据的编辑、排序和筛选功能。本教程将深入探讨如何...

    Qt GUI图形图像开发之QT表格控件QTableView详细使用方法与实例

    Qt GUI 图形图像开发之 QT 表格控件 QTableView 详细使用方法与实例 Qt GUI 图形图像开发中,QTableView 是一个非常重要的控件,它可以显示表格数据,实现数据的可视化展示。下面将详细介绍 QTableView 的使用方法...

    Qtableview的快捷键选择复制

    在Python的GUI编程中,PyQt是一个非常常用的库,它提供了丰富的组件来创建用户界面,其中`QTableView`是用于展示表格数据的重要组件。在处理大量数据时,特别是在数据分析领域,`QTableView`与Pandas的数据操作相...

    QTableView

    **QTableView:Qt中的表格视图组件** 在Qt框架中,`QTableView`是一个非常重要的组件,用于展示二维数据表。它允许用户查看和编辑表格数据,并提供了多种自定义功能,使得开发人员可以根据需求定制其行为和外观。...

    QTableView demo

    在Qt库中,`QTableView`是一个非常重要的组件,它被用于显示和编辑表格数据。这个"QTableView小demo"应该是展示如何使用`QTableView`来构建一个简单的表格视图应用。`QTableView`是Qt的模型/视图/控制器(MVC)架构...

    QTableView 插入按钮等各种控件实例

    在本文中,我们将深入探讨如何在Qt环境中使用`QTableView`控件来插入和添加各种交互式元素,如按钮、复选框、日期选择器以及列表选择等。`QTableView`是Qt库中的一个关键组件,它允许我们展示和操作二维表格数据。这...

    QTableView更新拖拽列功能啦

    在Qt库中,QTableView是用于显示表格数据的控件,它是QAbstractItemView的子类,常用于数据显示和编辑。QTableView提供了丰富的功能,包括行、列的排序,选择,以及自定义显示等。本篇文章将深入探讨如何在...

    设置QTableView的内容自动换行,代理方式

    在Qt框架中,`QTableView`是一个非常常用的控件,用于显示二维表格数据。...这个机制不仅限于文字换行,还可以用于实现更多自定义的绘制效果,如颜色、图标等,大大增强了`QTableView`的功能和表现力。

    QTableview实现委托、翻页、搜索功能

    2. **页码控制**:创建页码控件,如QSpinBox或QSlider,用于切换页面。 3. **事件处理**:当用户更改页码时,更新数据模型,重新加载对应页面的数据,并调用QTableView的horizontalHeader().resizeSections()和...

    QTableView大数据源码

    在Qt框架中,QTableView是用于显示表格数据的控件,尤其在处理大量数据时,其性能优化至关重要。本教程将深入探讨如何使用QTableView高效地显示超过100万条大数据,确保流畅运行而不会卡顿。 首先,QTableView是...

    Qt之QTableView添加复选框

    在Qt框架中,QTableView是用于显示表格数据的控件,它可以用来展示数据库或模型数据。本教程将深入探讨如何在QTableView中添加复选框,特别是在表头和第一列中实现这一功能,以增强用户界面的交互性。 首先,我们要...

Global site tag (gtag.js) - Google Analytics