Пример Qt программы с использованием QStackedWidget?
Хорошо, выложу вам кусок своего кода, опять же, это не полностью вся программа, а именно тот кусок где я использую QStackedWidget.

MainWidget::MainWidget(QWidget *parent = 0) : QWidget(parent)
{
   // Виджет для упражнения "мозаика".
  mosaicWidget = new MosaicWidget(this); 
   // Виджет для упражнения "карточка".
   cardWidget = new CardWidget(this);
   // Виджет для упражнения "написание".
   cardWidget = new CardWidget(this);
   
   // Соединяем сигнал окончания упражнения со слотом настройки следующего виджета
   connect(mosaicWidget, SIGNAL(finished()), this, SLOT(setupNextLesson()));
   stackedWidget->addWidget(mosaicWidget);
   .. // Аналогично для всех остальных
}
   
MainWidget::setupNextLesson()
{ 
     // Получаем случайный индекс от 0 до 2
     int randomIndex = qrand() % 3;
     // Настраиваем определенный виджет для показ
     switch(randomIndex)
     0 : mosaicWidget->setup(); break();
     1 : cardWidget->setup(); break();
     2 : writeWidget->setup(); break();
       
     // Непосредственно активируем нужный на виджет
     stackedWidget->setCurrentIndex(randomIndex);
     updateStatusBar(); 
}

p.s. Пример я изменил для простоты, в реале все мои виджеты наследуются от одного абстрактного класса, в который вынесены общие методы, в итоге код становился меньше и читабельней.
Писал на конференции по Maemo в Москве программульку, код здесь. Там есть QStackedWidget, мб подойдет.