【发布时间】:2013-08-09 16:14:30
【问题描述】:
我有一个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 上启用了排序功能,如何添加新行并为其每一列设置文本?
编辑:非爆炸性的回答(在 cmets 中):
只需要关注第二个QWidgetItem:
QTableWidgetItem *item2 = new QTableWidgetItem;
item1->setText("45");
_table->setItem(item1->row(), 1, item2); // change newRow by item1->row()
【问题讨论】:
-
查看
QTableWidgetItem::row()以获取item1的行 -
为此使用模型/视图可能更容易,但为什么不将行插入到最后并按最后一列排序呢?
标签: qt4 qtablewidget