gpt4 book ai didi

c++ - 按列排序后如何从 QTableWidget::item 中获取正确的行(Qt BUG?)?

转载 作者:行者123 更新时间:2023-11-28 07:53:45 28 4
gpt4 key购买 nike

我正在 Qt C++ 中做一些表格工作, 今天我在设置 sortEnabled(true) 后发现了一些非常可疑的东西.我想排序 QTableWidget按列排列,这就是我将该属性设置为 true 的原因.从逻辑上讲,我已经得到了我想要的,但我注意到当我 double clickrow of a table 上与其他行相对应的模式对话框正在打开。我在那张 table 里放了QTableWidgetItem-s .

 QTableWidgetItem* widgetItem = new QTableWidgetItem();
widgetItem->setData(Qt::UserRole, it->id);

关于 double click signal我正在使用 QTableWidget::item(int aRow, int aCol) 提取行项目,然后我得到自定义唯一 ID(在每一行我都分配了唯一 ID)。

要点是:单击列标题并排序后,我将获得排序前位于该位置的行的 ID。我现在得到的 ID 对应于其他行,因为我已按其他列排序。

我怎样才能摆脱这个问题?我做错什么了吗。或者我忘记将某些属性设置为 true/false?

我在想 sort仅影响表格的视觉方面,但不影响结构...

我只想要正确的 Id,没有别的。

这是表格情况的一个简短示例:

排序前:

===id=======category==
| 47 | b |
| 48 | a |
| 49 | c |
| 50 | d |
======================

当双击 b 时item(1,1) 返回 correct QTableWidget*ID = 47

现在我单击类别标题进行排序

排序后:

===id=======category==
| 48 | a |
| 47 | b |
| 49 | c |
| 50 | d |
======================

当双击 a 时item(1,1) 返回 the old one QTableWidget*ID = 47 再次! 我想要 48 而不是 47..

谁能帮帮我?

最佳答案

我不知道为什么它没有为您提供正确的项目,但您应该只听 QTableWidget::itemDoubleClicked()向您发送实际元素的信号,因此您无需四处走动即可获得它。

关于c++ - 按列排序后如何从 QTableWidget::item 中获取正确的行(Qt BUG?)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13198724/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com