我正在标记QTableView
子类,并用此保存其状态:
connect(this,
SIGNAL(clicked(const QModelIndex &)),
this,
SLOT(clickedRowHandler(const QModelIndex &))
);
void PlayListPlayerView::clickedRowHandler(const QModelIndex & index)
{
int iSelectedRow = index.row();
QString link = index.model()->index(index.row(),0, index.parent()).data(Qt::UserRole).toString();
emit UpdateApp(1,link );
}
现在我喜欢以编程方式将选择移动到下一行(而不是用鼠标按行)
并调用clickedRowHandler(...)
我该怎么做?
感谢
答案 0 :(得分:14)
您已拥有当前行索引,因此请使用以下内容获取下一行的modelindex
QModelIndex next_index = table->model()->index(row + 1, 0);
然后您可以使用
将该modelindex设置为当前的modelindextable->setCurrentIndex(next_index);
显然你需要确保你没有超越表的末尾,并且可能还有一些额外的步骤来确保选择整行,但这应该让你更接近。
答案 1 :(得分:0)
/*
* selectNextRow() requires a row based selection model.
* selectionMode = SingleSelection
* selectionBehavior = SelectRows
*/
void MainWindow::selectNextRow( QTableView *view )
{
QItemSelectionModel *selectionModel = view->selectionModel();
int row = -1;
if ( selectionModel->hasSelection() )
row = selectionModel->selection().first().indexes().first().row();
int rowcount = view->model()->rowCount();
row = (row + 1 ) % rowcount;
QModelIndex newIndex = view->model()->index(row, 0);
selectionModel->select( newIndex, QItemSelectionModel::ClearAndSelect );
}