0
我有一个QTableView的一些数据。数据有时会改变,然后我需要刷新TableView。刷新后,光标丢失位置。如果它在5位置(行),刷新超出tableview(或第一行)之后。我想让它回到5,但它不起作用。QTableView和设置指针位置
我通过“index = ui->tableView->currentIndex()
”并取回最后一个位置保存的“ui->tableView->setCurrentIndex(index)
”
有什么不对?
//save last cursor(row) position
QModelIndex index = ui->tableView->currentIndex();
//create basic model with my data
myModel = new MyModel();
//insert my model to sortfilterproxymodel and then sort it
QSortFilterProxyModel *sort_filter = new QSortFilterProxyModel(this);
sort_filter->setSourceModel(myModel);
sort_filter->setSortCaseSensitivity(Qt::CaseInsensitive);
sort_filter->sort(0, Qt::AscendingOrder); //sort by name
sort_filter->sort(5, Qt::DescendingOrder); //sort by surename
//insert my data to tableview
ui->tableView->setModel(sort_filter);
ui->tableView->hideColumn(5);
//return it back to its original position
ui->tableView->setCurrentIndex(index);
好了,我怎么可以设置一个指向一个特定的位置。因为通过QModelIndex index = ui-> tableView-> currentIndex(); int row = index.row();我知道最后一个活跃的位置。 – exo
您可以使用'row()'值通过'index(...)'从模型中获取一个新的'QModelIndex'并将其用于'setCurrentIndex()'。 –
谢谢你的帮助。我仍然有问题。我做了这个构造'QPoint point(row,0);''index = ui-> tableView-> indexAt(point);''ui-> tableView-> setCurrentIndex(index);'。现在行被选中,但位置错误。始终保持在第一个可见的行。 – exo