Как получить правильную строку из QTableWidget :: item после сортировки по столбцу (Qt BUG?)?

Я делаю какие-то настольные вещи в 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), затем я получаю пользовательский уникальный идентификатор (в каждой строке я назначил уникальные идентификаторы).

Дело в том, что после нажатия на заголовок столбца и сортировки я получаю идентификатор строки, которая была в этой позиции до сортировки. Идентификатор, который я получил сейчас, соответствует другой строке, потому что я отсортирован по другому столбцу.

Как мне избежать этой проблемы? Я сделал что-то неправильно. Или я забыл установить какое-либо свойство в true / false?

Я думаю что sort влияет только на визуальную сторону стола, но не структурно …

Я просто хочу правильный идентификатор, больше ничего.

Вот краткий пример ситуации с таблицей:

Перед сортировкой:

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

Когда дважды щелкните по b item (1,1) возвращает correct QTableWidget* а также ID = 47

Теперь я нажимаю заголовок catetegory, чтобы отсортировать

После сортировки:

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

Когда дважды щелкните по a item (1,1) возвращает the old one QTableWidget* а также ID = 47 СНОВА! Я хочу получить 48, а не 47 ..

Может кто-нибудь мне помочь?

0

Решение

Я не знаю, почему это не дает вам правильный предмет, но вы должны просто слушать QTableWidget::itemDoubleClicked() сигнал, который отправляет вам фактический предмет, так что вам не нужно ходить вокруг, чтобы получить его.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]