でテーブル関連の作業を行っていますが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
item(1,1)をダブルクリックするcorrect QTableWidget*
と andが返されますID = 47
今、カテゴリ ヘッダーをクリックして並べ替えています
並べ替え後:
===id=======category==
| 48 | a |
| 47 | b |
| 49 | c |
| 50 | d |
======================
a
item(1,1)をダブルクリックすると、 the old one QTableWidget*
and ID = 47
AGAIN ! が返されます。47じゃなくて48にしたい…
誰でも私を助けることができますか?