waynew
8th November 2011, 18:19
I have a QSqlTableModel and a QTableView. Trying to sort through the model, find a record, then scroll to it in the view.
Here is the code, where strID is a string to search for, like "89".
QSortFilterProxyModel proxy;
proxy.setSourceModel(model);
QModelIndex vidx;
proxy.setFilterKeyColumn(0);
proxy.setFilterFixedString(strID);
vidx = proxy.mapToSource(proxy.index(0, 0));
if (vidx.isValid())
{
view->selectionModel()->select(vidx, QItemSelectionModel::Select | QItemSelectionModel::Rows);
view->scrollTo(vidx, QAbstractItemView::EnsureVisible);
}
I am having two problems.
1. If the header sort is set to column 0 ascending, and the record found has a sequential value in column 0 of more than 256, the scrollTo does not work, 256 or less and it works fine.
2. if the header sort is set to column 0 descending, and the record found has a sequential value in column 0 of 89 for example, the view scrolls to the record with 289 in column 0.
Any advice as to how to overcome these problems greatly appreciated.
Here is the code, where strID is a string to search for, like "89".
QSortFilterProxyModel proxy;
proxy.setSourceModel(model);
QModelIndex vidx;
proxy.setFilterKeyColumn(0);
proxy.setFilterFixedString(strID);
vidx = proxy.mapToSource(proxy.index(0, 0));
if (vidx.isValid())
{
view->selectionModel()->select(vidx, QItemSelectionModel::Select | QItemSelectionModel::Rows);
view->scrollTo(vidx, QAbstractItemView::EnsureVisible);
}
I am having two problems.
1. If the header sort is set to column 0 ascending, and the record found has a sequential value in column 0 of more than 256, the scrollTo does not work, 256 or less and it works fine.
2. if the header sort is set to column 0 descending, and the record found has a sequential value in column 0 of 89 for example, the view scrolls to the record with 289 in column 0.
Any advice as to how to overcome these problems greatly appreciated.