私はいくつかのデータを持つQTableViewを持っています。データが変更されることがあり、TableViewをリフレッシュする必要があります。リフレッシュ後、カーソルは位置を失います。それが5位置(行)にあった場合、リフレッシュがtableview(または最初の行)から外れた後。私はそれを5に戻したいが、それはうまくいかない。QTableViewとポインタの位置を設定
私は「index = ui->tableView->currentIndex()
」で最後の位置を保存して何が悪い「ui->tableView->setCurrentIndex(index)
」
ことによってそれを取り戻しますか? setModel
を呼び出すことにより、
//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);
[OK]を、どのように私は、特定の位置へのポインタを設定することができます。 QModelIndexインデックス= 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