QTableWidget setSortingEnable 函数使用详解

Qt助手的解释

在这里插入图片描述

If enable is true, enables sorting for the table and immediately trigger a call to sortByColumn() with the current sort section and order
Note: Setter function for property sortingEnabled. 如果将 enable 设置为 true 那么就会立即调用 sortByColumn() 参数是当前所在的列和顺序。那么对于一个没有设置的QTableWidget来说当前所在的顺序是什么呐?

查看源码可以得到

void QTreeView::setSortingEnabled(bool enable)
{Q_D(QTreeView);header()->setSortIndicatorShown(enable);header()->setSectionsClickable(enable);if (enable) {//sortByColumn has to be called before we connect or set the sortingEnabled flag// because otherwise it will not call sort on the model.sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());connect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)),this, SLOT(_q_sortIndicatorChanged(int,Qt::SortOrder)), Qt::UniqueConnection);} else {disconnect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)),this, SLOT(_q_sortIndicatorChanged(int,Qt::SortOrder)));}d->sortingEnabled = enable;
}

setSortingEnabled 一共做了四件事,假设传入的 enable 为 true。

  1. 表头显示排序的指示符
  2. 设置表头每节可以被点击
  3. sortByColumn(); 可以查阅助手得知 默认的 sortIndicatorSect ion 是 0,默认的 sortIndicatorOrder
    应该是从小到大

注意: 在将 setSortingEnabled 为true后。排序就立刻生效了,在之后插入的每一项都将遵循排序的规则,所以一般建议是在一个表格插入完成后才将 setSortingEnabled 进行设置。在点击表头进行升序或者降序时,会根据设置 item 传入的是 字符串 还是数字进行排序。在很多时候我们往往希望是按照数字的升序或者降序进行排序的

例子

有一个表格,表头分别是 姓名 编号 成绩。我们希望是 表格初始化时 是按照编号进行升序排序。用户可以点击表头指定按照某一列进行升序或者降序排列

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);QStringList headers;headers << QStringLiteral("编号") << QStringLiteral("姓名") << QStringLiteral("成绩");ui->tableWidget->setHorizontalHeaderLabels(headers);ui->tableWidget->setRowCount(6);ui->tableWidget->setColumnCount(3);QTableWidgetItem *item0_0 = new QTableWidgetItem(QStringLiteral("小明"));QTableWidgetItem *item0_1 = new QTableWidgetItem(QStringLiteral("杰哥"));QTableWidgetItem *item0_2 = new QTableWidgetItem(QStringLiteral("老王"));QTableWidgetItem *item0_3 = new QTableWidgetItem(QStringLiteral("刘峰"));QTableWidgetItem *item0_4 = new QTableWidgetItem(QStringLiteral("城楼"));QTableWidgetItem *item0_5 = new QTableWidgetItem(QStringLiteral("二爷"));QList<QTableWidgetItem*> list({item0_0, item0_1, item0_2, item0_3, item0_4, item0_5});for(int i = 0; i < 6; ++i){ui->tableWidget->setItem(i, 0, list.at(i));}unsigned int seed = std::chrono::system_clock::now().time_since_epoch().count();std::default_random_engine engine(seed);std::uniform_int_distribution<int> distribution(0, 100);//因为我们希望是按照编号的数字来进行升序或者降序排布,所以这里要使用 setData() 接口for(int i = 0; i < 6; ++i){QTableWidgetItem *item = new QTableWidgetItem;item->setData(Qt::DisplayRole, i + 1);ui->tableWidget->setItem(i, 1, item);}for(int i = 0; i < 6; ++i){QTableWidgetItem *item = new QTableWidgetItem;item->setData(Qt::DisplayRole, distribution(engine));ui->tableWidget->setItem(i, 2, item);}//要插入完成后才设置该属性,因为默认情况下会根据第一列进行升序排序。这不是我们期望的//当然也可以修改默认要进行排序的列ui->tableWidget->setSortingEnabled(true);
}

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

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

相关文章

Election of the King 2023牛客暑期多校训练营4-F

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;有一个n个数的数组a&#xff0c;有n-1轮操作&#xff0c;每轮由每个数选择一个和它的差最大的数&#xff0c;如果相同就选值更大的&#xff0c;被最多数组选择的数字被删去&#xff0c;有相同的也去掉数值更大的那个…

使用Appuploader工具将IPA上传到App Store的最新流程和步骤

​ 苹果官方提供的工具xcode上架ipa非常复杂麻烦。用appuploader 可以在 mac 和windows 上制作管理 证书 &#xff0c;无需钥匙串工具 条件&#xff1a;1.以Windows为例&#xff0c;创建app打包ios需要的证书和描述文件 2.准备好一个苹果开发者账号&#xff08;如果没有到苹果…

Kubernetes(K8s)从入门到精通系列之六:K8s的基本概念和术语之存储类

Kubernetes K8s从入门到精通系列之六:K8s的基本概念和术语之存储类 一、存储类二、emptyDir三、hostPath四、公有云Volume五、其他类型的Volume六、动态存储管理一、存储类 存储类的资源对象主要包括: VolumePersistent VolumePVCStorageClass基础的存储类资源对象——Volum…

Vue.js与ASP.NET的结合,实现企业级应用的开发和部署

在当今快速发展的互联网技术领域&#xff0c;企业级应用的开发和部署变得越来越重要。Vue.js和ASP.NET是两个在前端和后端开发中广泛使用的技术&#xff0c;将它们结合起来可以为企业级应用的开发和部署带来诸多优势。本文将通过代码示例介绍如何使用Vue.js和ASP.NET进行企业级…

matlab使用教程(5)—矩阵定义和基本运算

本博客介绍如何在 MATLAB 中创建矩阵和执行基本矩阵计算。 MATLAB 环境使用矩阵来表示包含以二维网格排列的实数或复数的变量。更广泛而言&#xff0c;数组为向量、矩阵或更高维度的数值网格。MATLAB 中的所有数组都是矩形&#xff0c;在这种意义上沿任何维度的分量向量的长度…

C++ 类和对象篇(一) 类的引入

目录 一、类的概念 二、类的引入 三、类的定义 1.定义一个类 2.struct 和 class 的区别 3.类中成员函数的声明、实现分离 四、封装及类的访问限定符 1.封装 2.类的访问限定符 五、类的作用域和生命周期 六、类的实例化 七、类存储方法 八、计算类的大小 一、类的概念 1…

大盗阿福(记忆化搜索板子)

提供核心代码&#xff1a;&#xff08;经典的记忆化搜索套路&#xff09; int dfs(int pos){if(f[pos]!-1) return f[pos];//记忆化if(pos>n) return 0;//边界&#xff0c;越界int sum0;//模板int f10,f20;f1dfs(pos1);f2dfs(pos2)w[pos];summax(f1,f2);//模板f[pos]sum;//模…

TypeScript基础篇 - TS模块

目录 模块的概念 Export 语法&#xff08;default&#xff09; Export 语法&#xff08;non-default&#xff09; import 别名 Type Export语法【TS】 模块相关配置项&#xff1a;module【tsconfig.json】 模块相关配置项&#xff1a;moduleResolution 小节总结 模块的…

Unity 多语言问题C#篇

DateTime.ToString()不同语言环境问题 问题描述&#xff1a;PlayerPrefs.SetString("timeKey", DateTime.Now.ToString());切换系统语言后DateTime.Parse(PlayerPrefs.GetString("timeKey"));报错FormatException: String was not recognized as a valid D…

动态内存管理面试题

动态内存管理面试题 文章目录 动态内存管理面试题一、第一题此代码存在的问题运行结果分析原因修改 二、第二题此代码存在的问题运行结果分析原因修改 一、第一题 代码如下&#xff08;示例&#xff09;&#xff1a; #include<stdio.h> #include<string.h> #incl…

数据结构:顺序表详解

数据结构&#xff1a;顺序表详解 一、 线性表二、 顺序表概念及结构1. 静态顺序表&#xff1a;使用定长数组存储元素。2. 动态顺序表&#xff1a;使用动态开辟的数组存储。三、接口实现1. 创建2. 初始化3. 扩容4. 打印5. 销毁6. 尾插7. 尾删8. 头插9. 头删10. 插入任意位置数据…

《MySQL 实战 45 讲》课程学习笔记(三)

事务隔离 事务就是要保证一组数据库操作&#xff0c;要么全部成功&#xff0c;要么全部失败。 隔离性与隔离级别 事务特性&#xff1a;ACID&#xff08;Atomicity、Consistency、Isolation、Durability&#xff0c;即原子性、一致性、隔离性、持久性&#xff09;。当数据库上…

php 抽象工厂模式

1&#xff0c;抽象工厂&#xff08;Abstract Factory&#xff09;模式&#xff0c;是创建设计模式的一种&#xff0c;它创建一系列相关的对象&#xff0c;而不必指定具体的类。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候&#xff0c;可以为此系…

Intel和AMD 与 x86,ARM,MIPS有什么区别?

先说amd和intel amd和Intel这俩公司的渊源很深&#xff0c;早期时Intel先是自己搞了个x86架构&#xff0c;然后amd拿到了x86的授权也可以自己做x86了。接着intel向64位过渡的时候自己搞了个ia64&#xff08;x64架构&#xff09;但是因为和x86架构不兼容市场反应极差&#xff0…

100行代码写一个简易QT点名程序

照例演示一下: 分享一个简易的Qt点名程序&#xff0c;满打满算一百行代码&#xff08;还要什么自行车&#xff09;。 UI界面比较丑&#xff0c;按钮是自己做的&#xff0c;背景是AI作画生成的&#xff0c;大家可以自行更换背景以及按钮。 内容也是非常的简单&#xff0c;就是…

代码随想录算法训练营day46

文章目录 Day46单词拆分题目思路代码 Day46 单词拆分 139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; 题目 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆…

Jmeter接口/性能测试,Jmeter使用教程(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、线程组 线程组…

代码随想录算法训练营第二十二天 | 读PDF复习环节2

读PDF复习环节2 本博客的内容只是做一个大概的记录&#xff0c;整个PDF看下来&#xff0c;内容上是不如代码随想录网站上的文章全面的&#xff0c;并且PDF中有些地方的描述&#xff0c;是很让我疑惑的&#xff0c;在困扰我很久后&#xff0c;无意间发现&#xff0c;其网站上的讲…

Modbus tcp转ETHERCAT网关modbus tcp/ip协议

捷米JM-ECT-TCP网关能够连接到Modbus tcp总线和ETHERCAT总线中&#xff0c;实现两种不同协议设备之间的通讯。这个网关能够大大提高工业生产的效率和生产效益&#xff0c;让生产变得更加智能化。捷米JM-ECT-TCP 是自主研发的一款 ETHERCAT 从站功能的通讯网关。该产品主要功能是…

ARM day8 key1/2/3led

key_led.h #ifndef _KEY_H_ #define _KEY_H_#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_gic.h"//EXTI编号 typedef enum {EXTI0,EXTI1,EXTI2,EXTI3,EXTI4,EXTI5,…