Код: Выделить всё
#include
#include
#include
#include
class Widget : public QWidget
{
public:
explicit Widget()
{
setLayout(&vl);
tw.setRowCount(1);
tw.setColumnCount(3);
vl.addWidget(&btn);
vl.addWidget(&tw);
}
bool focusNextPrevChild(bool next)
{
QWidget* focusWidget = this->focusWidget();
if (focusWidget == &tw)
{
int currentRow = tw.currentRow();
int currentCol = tw.currentColumn();
int lastRow = tw.rowCount() - 1;
int lastCol = tw.columnCount() - 1;
if (next && currentRow == lastRow && currentCol == lastCol)
{
tw.clearFocus();
return true;
}
}
return QWidget::focusNextPrevChild(next);
}
private:
QPushButton btn;
QTableWidget tw;
QVBoxLayout vl;
};
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}

Я попробовал переопределить функцию focusNextPrevChild, но это не сработало. Как только фокус попадает в виджет таблицы, он не может его покинуть.
Подробнее здесь: https://stackoverflow.com/questions/789 ... -last-item