我有一个QTableWidget
,我可以通过按按钮添加行。问题是我有 _table->setSortingEnabled(true);
,当我插入新行时,我不知道它在哪里。因为由于我已将表设置为可排序,所以当我添加一行时,该行将移动到它的位置(取决于排序的列)。那我怎么知道是哪一个呢?
一列(名称)按字母顺序排序的示例:
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”第二列的值,而不是我想要的“boom”。
我尝试用一个例子来解释这个问题,希望它能有所帮助。那么,如果我的 QTableWidget
上启用了排序功能,如何添加新行并为其每一列设置文本?
编辑:非爆炸性的回答(在评论中):
只需对第二个 QWidgetItem
进行如下操作:
QTableWidgetItem *item2 = new QTableWidgetItem;
item1->setText("45");
_table->setItem(item1->row(), 1, item2); // change newRow by item1->row()
最佳答案
您可能需要在插入之前通过 setSortingEnabled(false) 禁用排序,并在完成后重新启用它。
关于Qt4 - 启用排序时如何在 QTableWidget 中添加行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151206/