繁体   English   中英

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

[英]How to get the correct row from QTableWidget::item after sortting by column (Qt BUG ?)?

我正在Qt C++做一些表操作,今天我在设置sortEnabled(true)之后发现了一些可疑的东西。 我想按列对QTableWidget进行排序,这就是为什么将该属性设置为true 从逻辑上讲,我已经有了想要的东西,但是我注意到,当我double click row of a tablerow of a 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项目(1,1)返回the old one QTableWidget*ID = 47 我要48而不是47

谁能帮我?

我不知道为什么它不能为您提供正确的项目,但是您应该只听QTableWidget::itemDoubleClicked()信号,该信号会向您发送实际的项目,因此您不必四处寻找。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM