C++ 如何在按列排序后从QTableWidget::item获取正确的行(Qt BUG?)?
我在C++ 如何在按列排序后从QTableWidget::item获取正确的行(Qt BUG?)?,c++,qt,row,qtablewidgetitem,C++,Qt,Row,Qtablewidgetitem,我在qtc++中做一些表格工作,今天我在设置sortEnabled(true)后发现了一些非常可疑的东西。我想按列对QTableWidget进行排序,这就是为什么我将该属性设置为true。从逻辑上讲,我已经得到了我想要的,但我注意到,当我在表的行上双击时,一个对应于其他行的模式对话框正在打开。 我将QTableWidgetItem-s放入该表中 QTableWidgetItem* widgetItem = new QTableWidgetItem(); widgetItem->setD
qtc++
中做一些表格工作,今天我在设置sortEnabled(true)
后发现了一些非常可疑的东西。我想按列对QTableWidget
进行排序,这就是为什么我将该属性设置为true
。从逻辑上讲,我已经得到了我想要的,但我注意到,当我在表的行上双击时,一个对应于其他行的模式对话框正在打开。
我将QTableWidgetItem-s放入该表中
QTableWidgetItem* widgetItem = new QTableWidgetItem();
widgetItem->setData(Qt::UserRole, it->id);
在双击signal
上,我用QTableWidget::item(intarow,intacol)
提取行项目,然后我得到自定义唯一ID(在我分配的每一行中都有唯一ID)
要点是:单击列标题并排序后,我将获得排序之前该位置上的行的ID。我现在得到的ID对应于另一行,因为我已按其他列排序
我怎样才能摆脱那个问题?我做错什么了吗。或者我忘记将某些属性设置为true/false
我认为,sort
只会影响表的视觉方面,但不会以结构化的方式影响
我只想要正确的身份证,别的什么都不要
以下是表格情况的一个简短示例:
排序前:
===id=======category==
| 47 | b |
| 48 | a |
| 49 | c |
| 50 | d |
======================
当双击b
项(1,1)时,返回正确的QTableWidget*
和ID=47
现在我单击catetegory标题进行排序
排序后:
===id=======category==
| 48 | a |
| 47 | b |
| 49 | c |
| 50 | d |
======================
当双击a
项(1,1)时,再次返回旧的QTableWidget*
和ID=47
我想得到48而不是47..
有人能帮我吗?我不知道为什么它不能给你正确的项目,但你应该只听发送给你实际项目的信号,这样你就不必到处去拿它了。我实际上在听void cell双击(int行,int列)
。我会试试你的建议,当我看到结果时,我会记下答案。谢谢:)顺便说一句。。你知道为什么我的方法(听cellDoubleClicked
)不起作用吗?因为它将是伟大的,以最小的代码逻辑变化完成任务。。。如果没有其他方法,我将使用你建议我的重写方法。