可以通过重新实现其keyPressEvent()来实现,下面是一个QTableView的示例,可做参考:
void TableView::keyPressEvent(QKeyEvent *event)
{
bool bTrans = false;
switch (event->key())
{
case Qt::Key_Return:
case Qt::Key_Enter:
bTrans = true;
default:;
}
QTableView::keyPressEvent(event);
if (!bTrans)
{
return;
}
QModelIndex idx = currentIndex();
QWidget *wgt = indexWidget(idx);
if (wgt != NULL)
{
commitData(wgt);
}
int iRow = idx.row();
int iCol = idx.column();
if (iRow == model()->rowCount() - 1)
{
return;
}
if (iCol < 4)
{
setCurrentIndex(model()->index(iRow, iCol + 1));
}
else if (iRow == model()->rowCount() - 2)
{
emit newRow();
}
else
{
setCurrentIndex(model()->index(iRow + 1, 0));
}
}