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的主要内容,如果未能解决你的问题,请参考以下文章

Qtablewidget设置颜色交替

qt 两个表关联

qt两个表关联

将 QT WebAssembly 与 Emscripten 关联

Qt信号与槽自动关联机制

Qt信号槽关联中使用普通变量关联(包含不修改和修改槽内数据两种)使用引用变量关联对于数据内部浅拷贝和深拷贝的测试结论