Qt4 - 启用排序时如何在 QTableWidget 中添加行?

标签 qt4 qtablewidget

我有一个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/

相关文章:

qt - 如何在QT5中自动隐藏QWidget?

c++ - glGenBuffers 在 Release Build 中崩溃

qt - 我如何知道我的 Widget 是否被其他应用程序遮挡或对用户可见?

QTableWidget 内存泄漏与否?

python - QTableWidget:插入行使应用程序崩溃 python

c++ - QTableWidget:信号itemChanged触发得太晚了(在发出其他 Action 的信号,关闭等之后)

qt - 如何打印具有文本和图形的 QGraphicsScene

Python QTableWidget 不显示全宽

c++ - QTableWidget在单元格中有多行

qt - 将 QWidget 添加到 QListWidget