• Пример Qt программы с использованием QStackedWidget?

    Artemzr
    @Artemzr
    Хорошо, выложу вам кусок своего кода, опять же, это не полностью вся программа, а именно тот кусок где я использую 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. Пример я изменил для простоты, в реале все мои виджеты наследуются от одного абстрактного класса, в который вынесены общие методы, в итоге код становился меньше и читабельней.
    Ответ написан
    2 комментария