gpt4 book ai didi

c++ - 如何将QTableView滚动到被移除元素之后/被移除元素之前的位置?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:15:55 24 4
gpt4 key购买 nike

我有一个简单的表,我在其中实现了 remove_row 方法:

QModelIndexList list = this->docTable->selectionModel()->selectedRows();
if(!list.isEmpty())
{
this->docTable->model()->removeRow(list.at(0).row());
this->model->select();
}

this->docTable 是一个 QTableView 而我的模型是一个 QSqlRelationalTableModel:

this->docTable = new QTableView(this);
this->model = new QSqlRelationalTableModel(this, db);
this->model->setTable("name");
this->model->select();
this->docTable->setModel(this->model);

我想做的是将 QTableView 滚动到选定和删除元素之后/之前的位置。我怎样才能做到这一点?

最佳答案

您可以在实际操作之前scrollTo 要删除的项目。之后删除该行时, View 仍应位于已删除行的位置。在你的例子中是

this->docTable->scrollTo(list.at(0));
this->docTable->model()->removeRow(list.at(0).row());
this->model->select();

否则,您可以计算删除行之前/之后的行的 QModelIndex(如果存在)。由于删除行的位置是 list.at(0).row(),因此之前的行是 list.at(0).row() - 1 (if row() > 0) 并且在删除所选行后,下一行再次出现在 list.at(0).row() 中。要检索该行的 QModelIndex,请使用模型的 index(newRow, 0, QModelIndex())

关于c++ - 如何将QTableView滚动到被移除元素之后/被移除元素之前的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33633022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com