Вот как я это решил
void MainWindow::on_tabWidget_currentChanged(int index)
{
if (lockTabs) ui->tabWidget->setCurrentIndex(lockedTab);
}
При нажатии кнопки я устанавливаю true для lockTabs и сохраняю индекс текущей вкладки в lockedTab (int). Независимо от того, на какой вкладке вы нажали, она просто вернет вас на заблокированную вкладку.
Я согласен с первым комментарием, что отключение вкладок - лучший способ. Это мое решение для отключения вкладок:
void MainWindow::lockTabs(int except){
for (int i=0; i<ui->tabWidget->count(); i++) {
if (i!=except) ui->tabWidget->setTabEnabled(i, false);
}
}
void MainWindow::unlockTabs() {
for (int i=0; i<ui->tabWidget->count(); i++) {
ui->tabWidget->setTabEnabled(i, true);
}
}