QT使用QSORTFILTERMODEL关联QTableView,排序后序号不是1、2、3***,而是打乱的序号,怎么使得序号还是1、2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT使用QSORTFILTERMODEL关联QTableView,排序后序号不是1、2、3***,而是打乱的序号,怎么使得序号还是1、2相关的知识,希望对你有一定的参考价值。
你需要给QSORTFILTERMODEL一个排序规则,只是让他默认排序是不可以的。你可以在
http://qt-apps.org/
下载类似的应用来学习一下。追问
很感谢你的回答。给的链接不知道怎么回事,打不开哈。能不能麻烦你把主要内容给我贴一下。可能提问不是说的很清楚,我实现的功能是:1、排序后,序号是乱的。2、过滤后,一些行被隐藏,不显示在QTableView里,导致序号缺省。真的非常感谢哈
参考技术A 您好,请问解决了吗,我也遇到了相同的问题。Qt信号槽关联中使用普通变量关联(包含不修改和修改槽内数据两种)使用引用变量关联对于数据内部浅拷贝和深拷贝的测试结论
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/128336866
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)
Qt开发专栏:概念
打印具体类型的方法
LOG << QString::number(reinterpret_cast<qintptr>(vectorTime.constData()), 16);
同一线程类,普通传递,变量不同,地址相同
../../xMonitorDemo/modules/hydrophoneProtocolManager/HydrophoneProtocolManager.cpp 226 "2022-12-15 22:39:10:348" "7f9e24012f08"
../../xMonitorDemo/modules/hydrophoneProtocolManager/HydrophoneProtocolManager.cpp 235 "2022-12-15 22:39:10:348" "7f9e24012f08"
不同线程类,普通传递,变量不同,地址相同
void signal_timeCurrentVoltage(QVector<double> vectorTime,
QVector<double> vectorCurrent,
QVector<double> vectorValue);
../../xMonitorDemo/modules/ampProtocolManager/AmpProtocolManager.cpp 1922 "2022-12-15 23:05:06:191" "7f306c00b558"
../../xMonitorDemo/modules/ampWidget/AmpWidget.cpp 475 "2022-12-15 23:05:06:192" "7f306c00b558"
不同线程类,使用引用信号槽,变量不同,地址相同
void signal_timeCurrentVoltage(QVector<double> &vectorTime,
QVector<double> &vectorCurrent,
QVector<double> &vectorValue);
../../xMonitorDemo/modules/ampProtocolManager/AmpProtocolManager.cpp 1922 "2022-12-15 23:01:01:794" "7f9a5c0072f8"
../../xMonitorDemo/modules/ampWidget/AmpWidget.cpp 487 "2022-12-15 23:01:01:795" "7f9a5c0072f8"
不同线程,普通传递,变量不通,地址相同,但是在目标后修改,则会导致深拷贝一份再修改(结论:只要不修改,就是隐式浅拷贝传递)
LOG << QString::number(reinterpret_cast<qintptr>(vectorTime.constData()), 16) << vectorTime.at(0);
vectorTime[0] = 1.234f;
LOG << QString::number(reinterpret_cast<qintptr>(vectorTime.constData()), 16) << vectorTime.at(0);
../../xMonitorDemo/modules/ampProtocolManager/AmpProtocolManager.cpp 1925 "2022-12-15 23:13:06:078" "7f4b50007058" 1.67112e+09
../../xMonitorDemo/modules/ampWidget/AmpWidget.cpp 475 "2022-12-15 23:13:06:079" "7f4b50007058" 1.67112e+09
../../xMonitorDemo/modules/ampWidget/AmpWidget.cpp 477 "2022-12-15 23:13:06:079" "557002bcb548" 1.234
由以上可以判断 不论是否再信号槽中使用引用,是否跨线程,都不会导致其进行深拷贝,都是浅拷贝
测试结论:
在信号槽的传递上:普通传递,引用传递和常量引用传递;
1.信号槽使用普通传递:带结构的是隐式传递,会产生临时变量,默认就是隐式浅拷贝;
2.信号槽使用引用传递:带结构的是隐式传递,会产生临时变量,是隐式浅拷贝(注意:这里可以被修改,只要不修改,就是隐式浅拷贝传递,修改则会临时深拷贝一次消耗深拷贝性能,不过一般传递基本不修改的,只做读取和解析);
3.信号槽使用引用常量传递:带结构的是隐式传递,会产生临时变量,是隐式浅拷贝。
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/128336866
以上是关于QT使用QSORTFILTERMODEL关联QTableView,排序后序号不是1、2、3***,而是打乱的序号,怎么使得序号还是1、2的主要内容,如果未能解决你的问题,请参考以下文章