Ich habe eine QTableView mit einigen Daten. Die Daten ändern sich manchmal, und dann muss TableView aktualisiert werden. Nach der Aktualisierung verliert der Cursor die Position. Wenn es in 5 Position (Zeile) war, ist die Aktualisierung außerhalb der Tabellenansicht (oder in der ersten Zeile). Ich will es wieder auf 5, aber es funktioniert nicht.QTableView und setzen Zeigerposition
ich zuletzt gespeicherte Position von „index = ui->tableView->currentIndex()
“ und von „ui->tableView->setCurrentIndex(index)
“
zurück Was ist los?
//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, also wie kann ich einen Zeiger auf eine bestimmte Position. Weil durch QModelIndex index = ui-> tableView-> currentIndex(); int row = index.row(); Ich kenne die letzte aktive Position. – exo
Sie können den 'row()' - Wert verwenden, um einen neuen 'QModelIndex' von Ihrem Modell über' index (...) 'zu erhalten und diesen für' setCurrentIndex() 'zu verwenden. –
Vielen Dank für Ihre Hilfe. Ich habe immer noch ein Problem. Ich habe diese Konstruktion gemacht 'QPoint Punkt (Zeile, 0);' 'Index = ui-> TableView-> IndexAt (Punkt);' 'Ui-> TableView-> SetCurrentIndex (Index);'. Jetzt ist die Zeile ausgewählt, aber auf der falschen Position. Immer auf der ersten sichtbaren Reihe bleiben. – exo