我正在做一些桌子的东西Qt C++
,今天我在设置后发现了一些非常可疑的东西sortEnabled(true)
。我想QTableWidget
按列排序,这就是我将该属性设置为true
. 从逻辑上讲,我已经得到了我想要的东西,但我注意到当我double click
打开一个row 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 对应于其他行,因为我已按其他列排序。
我怎样才能摆脱这个问题?我做错什么了吗。或者我忘记将某些属性设置为真/假?
我认为这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
AGAIN! 我要的是 48 而不是 47..
谁能帮我?