0

我正在做一些桌子的东西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     |
======================

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

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

排序后:

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

当双击aitem(1,1) 时返回the old one QTableWidget*ID = 47 AGAIN我要的是 48 而不是 47..

谁能帮我?

4

1 回答 1

1

我不知道为什么它没有让你得到正确的物品,但你应该只听QTableWidget::itemDoubleClicked()向你发送实际物品的信号,这样你就不必四处寻找它。

于 2012-11-02T17:11:32.330 回答