QTableWidget
ボタンを押して行を追加できる があります。問題は_table->setSortingEnabled(true);
、新しい行を挿入するときに、それがどこにあるかわからないことです。テーブルを並べ替え可能に設定したため、行を追加すると、この行はその位置に移動します (並べ替えられる列によって異なります)。それがどれであるかをどうやって知ることができますか?
アルファベット順に並べ替えられた 1 つの列 (名前) の例:
Name |
------
abc
toto
zozo
次のような行を追加すると:
int newRow = _table->rowCount();
_table->insertRow(newRow);
QTableWidgetItem *item1 = new QTableWidgetItem;
item1->setText("boom");
_table->setItem(newRow, 0, item1);
行は「abc」と「toto」の間になります。
Name |
------
abc
<<< boom
toto
zozo
ここでは正常に動作しますが、複数の列があり、たとえば試してみると次のようになります。
QTableWidgetItem *item2 = new QTableWidgetItem;
item1->setText("45");
_table->setItem(newRow, 1, item2);
変更される値は、「zozo」の 2 列目の値であり、必要な「boom」ではありません。
問題を例で説明しようとしましたが、役に立てば幸いです。でソートを有効にしている場合、新しい行を追加し、各列のテキストを設定するにはどうすればよいQTableWidget
ですか?
編集:非爆発性からの回答(コメント内):
2番目の次のようにする必要がありますQWidgetItem
:
QTableWidgetItem *item2 = new QTableWidgetItem;
item1->setText("45");
_table->setItem(item1->row(), 1, item2); // change newRow by item1->row()