Qt实现单击或双击QTableWidge/View表头进行排序

简介: Qt实现单击或双击QTableWidge/View表头进行排序

先看效果图 点击一次对应列进行降序,再点击一次进行升序,分别对应图1、图2。

实现代码

构造函数中设置了一个sign以及关联对应的信号。 双击表头的信号为sectionDoubleClickClicked

m_sign = true;//设置一个标志位
// 单击表头
connect(ui.tableWidget->horizontalHeader(), &QHeaderView::sectionClicked, this, &QtTableWidgetsSort::onCustomSort);
// 双击表头信号 sectionDoubleClickClicked


槽函数实现为

void QtTableWidgetsSort::onCustomSort(int logicalIndex)
{
  for (size_t i = 0; i < ui.tableWidget->rowCount() - 1; ++i)
  {
    for (size_t j = 0; j < ui.tableWidget->rowCount() - i - 1; ++j)
    {
      if(m_sign == (ui.tableWidget->item(j,logicalIndex)->text() > 
                ui.tableWidget->item(j + 1, logicalIndex)->text()))
      {
                for (size_t k = 0; k < ui.tableWidget->columnCount(); ++k)
                {
                    QTableWidgetItem item1 = *ui.tableWidget->item(j, k);
                    ui.tableWidget->item(j, k)->setText(ui.tableWidget->item(j + 1, k)->text());
                    ui.tableWidget->item(j + 1, k)->setText(item1.text());
                }
      }
    }
  }
    m_sign = !m_sign;
}
目录
相关文章
|
JavaScript 大数据
Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
上一篇的demo使用隐藏js代码的方式,实现了一个饼图的基本交互方式,并预留了Qt模块对外的基础接口。   本篇的demo实现了自动排序的柱状图,实现了一个自动排序柱状图的基本交互方式,即Qt调用js脚本操作html。   本篇demo使用Qt定时器方式,实现数据定时刷新自增,并预留出了定时器间隔参数。   像大数据网页常看的人口增长时间图,收入年度增长时间图等都是这一类。
Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
QT应用编程: QGraphicsTextItem单击选中、双击进入编辑状态
QT应用编程: QGraphicsTextItem单击选中、双击进入编辑状态
655 0
QT应用编程: QGraphicsTextItem单击选中、双击进入编辑状态
|
Linux Windows
Qt6 防止程序多重启动,并实现双击图标显示已运行的程序
欢迎来到我的博客,希望这篇文章对你有所帮助,如果觉得不错,请点赞搜藏哈。
620 0
|
监控 定位技术
Qt编写安防视频监控系统8-双击节点
一、前言 在所有的视频监控系统中,双击摄像机的节点,对应摄像机加载到当前焦点通道显示,这个都是必须具备的功能,还有一些厂家会做双击NVR节点,自动加载该NVR下的所有摄像机全部显示,从通道1开始到通道16或者32,知道排满,或者双击对应的分组,分组下面的所有摄像机自动加载显示视频,这个基础效果在Q...
1119 0
|
索引
Qt之QHeaderView自定义排序(获取正确的QModelIndex)
简述 前几节中分享过关于自定义排序的功能,貌似我们之前的内容已经可以很好地解决排序问题了,但是,会由此引发一些很难发现的问题。。。比如:获取QModelIndex索引错误。 下面,我们先来实现一个整行选中的效果。 简述 错误处理 效果 源码 分析 正常处理 效果 源码 错误处理 效果 下面是一个非正常的的效果,选中当前行会造成更新错误,
1048 0
|
C++ 搜索推荐
Qt之QHeaderView自定义排序(QSortFilterProxyModel)
简述 对以上节的排序,我们衍伸了两点: 把一个字符串前面的数据按照字符串比较,而后面的数据按照整形比较。 将整形显示为字符串,而排序依然正常呢。 为了分别描述,这里我们先解决问题1。 简述 效果 处理大小显示 QAbstractTableModel QSortFilterProxyModel 提示 效果 处理大小显示 // 定义GB
1259 0