我在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对应于其他行,因为我已按其他列排序。
我如何摆脱这个问题?我做错什么了吗。或者我忘记将某些属性设置为true / false?
我认为sort
仅影响表格的视觉方面,但不会影响结构方式......
我只想要正确的ID,没有别的。
以下是表格情况的简短示例:
排序前:
===id=======category==
| 47 | b |
| 48 | a |
| 49 | c |
| 50 | d |
======================
双击b
项目(1,1)时,会返回correct QTableWidget*
和ID = 47
现在我点击catetegory标题进行排序
排序后:
===id=======category==
| 48 | a |
| 47 | b |
| 49 | c |
| 50 | d |
======================
双击a
项目(1,1)时,会返回the old one QTableWidget*
和ID = 47
重新! 我想得到48而不是47 ..
任何人都可以帮助我吗?
答案 0 :(得分:1)
我不知道为什么它没有为您提供正确的项目,但您应该只听QTableWidget::itemDoubleClicked()
信号,该信号会向您发送实际项目,因此您无需四处寻找它。