Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Stackwidget interface switching problem

Stackwidget interface switching problem

Scheduled Pinned Locked Moved Unsolved General and Desktop
7 Posts 2 Posters 612 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Q Offline
    Q Offline
    Qt_HuangZiHan
    wrote on last edited by Qt_HuangZiHan
    #1

    Hello there,
    My program runs without problems, but when I click the tool button, some page numbers are incorrectly printed, some pages are displayed upside down, and some are not displayed.

    widget.cpp

    #include "widget.h"
    #include "ui_widget.h"
    #include <QTime>
    #include <Qtimer>
    #include <QFont>
    #include <QPropertyAnimation>
    #include <QDebug>
    
    
    Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
    {
        ui->setupUi(this);
        this->InitializeForm();
        this->InitializeWidget();
        this->CounterTime();
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    
    //界面样式初始化
    void Widget::InitializeForm()
    {
        this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint |
                             Qt::WindowMinMaxButtonsHint);
        this->setWindowTitle(tr("子涵智家"));
        this->setWindowIcon(QIcon(":/images/icon/TitleBarIcon.ico"));
    
        ui->widget_time->setObjectName("widget_time");
        ui->widget_time->setStyleSheet("#widget_time{border:2px groove gray;border-radius:12px;padding:2px 4px;}");
    
        //设置首页顶部的样式
        ui->widget_setting->setText(tr("设置"));
        ui->widget_setting->setIcon(QPixmap(":/images/widget_top/setting_pressed.png"));
        ui->widget_setting->setIconSize(QPixmap(":/images/widget_top/setting_pressed.png").size());
        ui->widget_setting->setAutoRaise(true);//鼠标经过是自动凸起
        ui->widget_setting->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//文本在图标的下面
    
        ui->widget_home->setText(tr("首页"));
        ui->widget_home->setIcon(QPixmap(":/images/widget_top/home_normal.png"));
        ui->widget_home->setIconSize(QPixmap(":/images/widget_top/home_normal.png").size());
        ui->widget_home->setAutoRaise(true);
        ui->widget_home->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    
        ui->widget_title->setStyleSheet("border-image: url(:/images/widget_top/widget_title.jpg);");
    
        //设置首页中部的样式
    
    
    
        //设置首页底部的样式
        ui->toolButton_control->setText(tr("家居控制"));
        ui->toolButton_control->setIcon(QPixmap(":/images/widget_bottom/toolButton_control.jpg"));
         ui->toolButton_control->setIconSize(QPixmap(":/images/widget_bottom/toolButton_control.jpg").size());
        ui->toolButton_control->setAutoRaise(true);//鼠标经过是自动凸起
        ui->toolButton_control->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//文本在图标的下面
    
        ui->toolButton_curtain->setText(tr("窗帘控制"));
        ui->toolButton_curtain->setIcon(QPixmap(":/images/widget_bottom/toolButton_curtain.jpg"));
        ui->toolButton_curtain->setIconSize(QPixmap(":/images/widget_bottom/toolButton_curtain.jpg").size());
        ui->toolButton_curtain->setAutoRaise(true);
        ui->toolButton_curtain->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    
        ui->toolButton_module->setText(tr("模式选择"));
        ui->toolButton_module->setIcon(QPixmap(":/images/widget_bottom/toolButton_module.jpg"));
         ui->toolButton_module->setIconSize(QPixmap(":/images/widget_bottom/toolButton_module.jpg").size());
        ui->toolButton_module->setAutoRaise(true);//鼠标经过是自动凸起
        ui->toolButton_module->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//文本在图标的下面
    
        ui->toolButton_music->setText(tr("音乐播放"));
        ui->toolButton_music->setIcon(QPixmap(":/images/widget_bottom/toolButton_music.png"));
        ui->toolButton_music->setIconSize(QPixmap(":/images/widget_bottom/toolButton_music.png").size());
        ui->toolButton_music->setAutoRaise(true);
        ui->toolButton_music->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    
        ui->toolButton_statistics->setText(tr("数据统计"));
        ui->toolButton_statistics->setIcon(QPixmap(":/images/widget_bottom/toolButton_statistics.jpg"));
        ui->toolButton_statistics->setIconSize(QPixmap(":/images/widget_bottom/toolButton_statistics.jpg").size());
        ui->toolButton_statistics->setAutoRaise(true);
        ui->toolButton_statistics->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    
        //设置首页中部选择房间的工具按钮的样式
        ui->widget_bedroom->setText(tr("卧室"));
        ui->widget_bedroom->setIcon(QPixmap(":/images/room_selection/widget_bedroom.jpg"));
        ui->widget_bedroom->setIconSize(QPixmap(":/images/room_selection/widget_bedroom.jpg").size());
        ui->widget_bedroom->setAutoRaise(true);
        ui->widget_bedroom->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    
        ui->widget_kitchen->setText(tr("厨房"));
        ui->widget_kitchen->setIcon(QPixmap(":/images/room_selection/widget_kitchen.jpg"));
        ui->widget_kitchen->setIconSize(QPixmap(":/images/room_selection/widget_kitchen.jpg").size());
        ui->widget_kitchen->setAutoRaise(true);
        ui->widget_kitchen->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    
        ui->widget_parlor->setText(tr("客厅"));
        ui->widget_parlor->setIcon(QPixmap(":/images/room_selection/widget_parlor.jpg"));
        ui->widget_parlor->setIconSize(QPixmap(":/images/room_selection/widget_parlor.jpg").size());
        ui->widget_parlor->setAutoRaise(true);
        ui->widget_parlor->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    
        ui->widget_safety->setText(tr("安防"));
        ui->widget_safety->setIcon(QPixmap(":/images/room_selection/widget_safety.jpg"));
        ui->widget_safety->setIconSize(QPixmap(":/images/room_selection/widget_safety.jpg").size());
        ui->widget_safety->setAutoRaise(true);
        ui->widget_safety->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    
        ui->widget_middle->setCurrentIndex(enum_widget_home);
        //qDebug()<<"E_HOME_WIDGET is = "<<enum_homepage;
        //要按下家居控制按钮后才进入中间部分样式。
    }
    
    void Widget::InitializeWidget()
    {
        new_settingDialog = new settingDialog;
        //m_statisticWidget = new StatisticWidget();
        new_bedRoomWidget = new bedroom();
        new_curtainWidget = new curtain_control();
        new_PlayMusicWidget = new play_music();
        //m_modelWidget = new ModelChooseWidget();
        new_parlourWidget = new Parlour();
        //m_kitchenWidget = new KitchenWidget();
        //ui->stackedWidget->addWidget(m_bedRoomWidget);
        ui->widget_middle->addWidget(new_curtainWidget);
        ui->widget_middle->addWidget(new_PlayMusicWidget);
        //ui->stackedWidget->addWidget(m_modelWidget);
        ui->widget_middle->addWidget(new_parlourWidget);
        //ui->stackedWidget->addWidget(m_kitchenWidget);
        //ui->stackedWidget->addWidget(m_statisticWidget);
    }
    
    void Widget::CounterTime()
    {
        new_timer = new QTimer(this);
        connect(new_timer,SIGNAL(timeout()),this,SLOT(ShowCurrentDataTime_SlotsAndStyle()));
        new_timer->start(1000);//定时1s钟。
    }
    
    /*void Widget::startAnimation()
    {
        QPropertyAnimation *animation = new QPropertyAnimation(ui->widget_middle->currentWidget(), "geometry");
        animation->setDuration(800);
        animation->setStartValue(QRect(0, 0,100, 30));
        animation->setEndValue(QRect(0, 0, 800, 360));
        animation->start();
    }*/
    
    void Widget::ShowCurrentDataTime_SlotsAndStyle()
    {
        ui->widget_hour->setText(QTime::currentTime().toString("hh"));
        ui->widget_min->setText(QTime::currentTime().toString("mm"));
        ui->widget_sec->setText(QTime::currentTime().toString("ss"));
        ui->widget_data->setText(QDate::currentDate().toString("yyyy年MM月dd日"));
        ui->widget_week->setText(QDate::currentDate().toString("dddd"));
        ui->widget_colon->setText(":");
        ui->widget_hour->setStyleSheet("color:#f0c051");
        ui->widget_sec->setStyleSheet("color:#f0c051");
        ui->widget_min->setStyleSheet("color:#f0c051");
        ui->widget_week->setStyleSheet("color:#f0c051");
        ui->widget_data->setStyleSheet("color:#f0c051");
        ui->widget_colon->setStyleSheet("color:#f0c051");
    
        QFont font("SimHei", 50, 50, false);
        ui->widget_colon->setFont(font);
    
    }
    
    void Widget::setCurrentWidget(enum_widget enum_widget_name)
    {
        //startAnimation();
        ui->widget_middle->setCurrentIndex(enum_widget_name);
    }
    
    void Widget::on_widget_setting_clicked()
    {
        new_settingDialog->show();
    }
    
    void Widget::on_widget_home_clicked()
    {
         this->setCurrentWidget(enum_widget_home);
         qDebug()<<"当前索引页 主页:="<<ui->widget_middle->currentIndex();
    }
    
    void Widget::on_widget_bedroom_clicked()
    {
          this->setCurrentWidget(enum_bedroom);
          qDebug()<<"当前索引页 卧室:="<<ui->widget_middle->currentIndex();
    }
    
    void Widget::on_widget_kitchen_clicked()
    {
    
    }
    
    void Widget::on_widget_safety_clicked()
    {
    
    }
    
    void Widget::on_widget_parlor_clicked()
    {
         this->setCurrentWidget(enum_parlour);
         qDebug()<<"当前索引页 客厅:="<<ui->widget_middle->currentIndex();
    }
    
    void Widget::on_toolButton_control_clicked()
    {
         this->setCurrentWidget(enum_toolButton_control);
         qDebug()<<"当前索引页 家居控制:="<<ui->widget_middle->currentIndex();
    }
    
    void Widget::on_toolButton_music_clicked()
    {
         ui->widget_middle->setCurrentIndex(enum_paly_music);
         qDebug()<<"当前索引页 音乐播放:="<<ui->widget_middle->currentIndex();
    }
    
    void Widget::on_toolButton_statistics_clicked()
    {
    
    }
    
    void Widget::on_toolButton_curtain_clicked()
    {
         ui->widget_middle->setCurrentIndex(enum_curtain_control);
         qDebug()<<"当前索引页 窗帘控制:="<<ui->widget_middle->currentIndex();
    }
    
    void Widget::on_toolButton_module_clicked()
    {
    
    }
    
    

    widget.h

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QWidget>
    #include <QTime>
    #include <QTimer>
    #include "curtain_control.h"
    #include "settingdialog.h"
    #include "play_music.h"
    #include "parlour.h"
    #include "bedroom.h"
    
    namespace Ui {
    class Widget;
    }
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
        enum enum_widget
        {
            enum_toolButton_control = 0,    //控制主页
            enum_widget_home=1,             //首页
            enum_bedroom=2,                 //卧室
            enum_curtain_control=3,         //窗帘界面
            enum_paly_music=4,              //音乐播放界面
            //E_MODEL_WIDGET=5,             //模式控制
            enum_parlour=6,       //客厅
            //E_KITCHEN_WIDGET = 7,         //厨房
            //E_TEMPTURE = 8,               //统计
            //E_NIGHT_WIDGET,               //夜间模式
            //E_SECURITY_WIDGET,            //安防管理界面
        };
    
    public:
        explicit Widget(QWidget *parent = 0);
        ~Widget();
    
    private:
        Ui::Widget *ui;
    
        QTimer *new_timer;
    
        void  InitializeForm();
        void  CounterTime();
        void  InitializeWidget();
        void  setCurrentWidget(enum_widget enum_widget_name);
        //void  startAnimation();
    
    
    
        settingDialog *new_settingDialog;           //设置界面
        Parlour *new_parlourWidget;                 //客厅界面
        bedroom *new_bedRoomWidget;                 //卧室界面
        //KitchenWidget *m_kitchenWidget;                 //厨房界面
        //StatisticWidget *m_statisticWidget;             //统计界面
        curtain_control *new_curtainWidget;                 //窗帘界面
        //ModelChooseWidget *m_modelWidget;               //模式选择控制界面
         play_music *new_PlayMusicWidget;                 //音乐播放界面
    
    private slots:
        void ShowCurrentDataTime_SlotsAndStyle();
        void on_widget_setting_clicked();
        void on_widget_home_clicked();
        void on_widget_bedroom_clicked();
        void on_widget_kitchen_clicked();
        void on_widget_safety_clicked();
        void on_widget_parlor_clicked();
        void on_toolButton_control_clicked();
        void on_toolButton_music_clicked();
        void on_toolButton_statistics_clicked();
        void on_toolButton_curtain_clicked();
        void on_toolButton_module_clicked();
    };
    
    #endif // WIDGET_H
    
    

    Unable to display page
    0_1556165636713_问题1.PNG
    Interchanging pages
    1_1556165712355_问题4.PNG 0_1556165712354_问题3.PNG
    The index number is set to 6 but the printout is 0.
    0_1556165796756_问题2.PNG

    jsulmJ 1 Reply Last reply
    0
    • Q Qt_HuangZiHan

      Hello there,
      My program runs without problems, but when I click the tool button, some page numbers are incorrectly printed, some pages are displayed upside down, and some are not displayed.

      widget.cpp

      #include "widget.h"
      #include "ui_widget.h"
      #include <QTime>
      #include <Qtimer>
      #include <QFont>
      #include <QPropertyAnimation>
      #include <QDebug>
      
      
      Widget::Widget(QWidget *parent) :
          QWidget(parent),
          ui(new Ui::Widget)
      {
          ui->setupUi(this);
          this->InitializeForm();
          this->InitializeWidget();
          this->CounterTime();
      }
      
      Widget::~Widget()
      {
          delete ui;
      }
      
      //界面样式初始化
      void Widget::InitializeForm()
      {
          this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint |
                               Qt::WindowMinMaxButtonsHint);
          this->setWindowTitle(tr("子涵智家"));
          this->setWindowIcon(QIcon(":/images/icon/TitleBarIcon.ico"));
      
          ui->widget_time->setObjectName("widget_time");
          ui->widget_time->setStyleSheet("#widget_time{border:2px groove gray;border-radius:12px;padding:2px 4px;}");
      
          //设置首页顶部的样式
          ui->widget_setting->setText(tr("设置"));
          ui->widget_setting->setIcon(QPixmap(":/images/widget_top/setting_pressed.png"));
          ui->widget_setting->setIconSize(QPixmap(":/images/widget_top/setting_pressed.png").size());
          ui->widget_setting->setAutoRaise(true);//鼠标经过是自动凸起
          ui->widget_setting->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//文本在图标的下面
      
          ui->widget_home->setText(tr("首页"));
          ui->widget_home->setIcon(QPixmap(":/images/widget_top/home_normal.png"));
          ui->widget_home->setIconSize(QPixmap(":/images/widget_top/home_normal.png").size());
          ui->widget_home->setAutoRaise(true);
          ui->widget_home->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
      
          ui->widget_title->setStyleSheet("border-image: url(:/images/widget_top/widget_title.jpg);");
      
          //设置首页中部的样式
      
      
      
          //设置首页底部的样式
          ui->toolButton_control->setText(tr("家居控制"));
          ui->toolButton_control->setIcon(QPixmap(":/images/widget_bottom/toolButton_control.jpg"));
           ui->toolButton_control->setIconSize(QPixmap(":/images/widget_bottom/toolButton_control.jpg").size());
          ui->toolButton_control->setAutoRaise(true);//鼠标经过是自动凸起
          ui->toolButton_control->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//文本在图标的下面
      
          ui->toolButton_curtain->setText(tr("窗帘控制"));
          ui->toolButton_curtain->setIcon(QPixmap(":/images/widget_bottom/toolButton_curtain.jpg"));
          ui->toolButton_curtain->setIconSize(QPixmap(":/images/widget_bottom/toolButton_curtain.jpg").size());
          ui->toolButton_curtain->setAutoRaise(true);
          ui->toolButton_curtain->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
      
          ui->toolButton_module->setText(tr("模式选择"));
          ui->toolButton_module->setIcon(QPixmap(":/images/widget_bottom/toolButton_module.jpg"));
           ui->toolButton_module->setIconSize(QPixmap(":/images/widget_bottom/toolButton_module.jpg").size());
          ui->toolButton_module->setAutoRaise(true);//鼠标经过是自动凸起
          ui->toolButton_module->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//文本在图标的下面
      
          ui->toolButton_music->setText(tr("音乐播放"));
          ui->toolButton_music->setIcon(QPixmap(":/images/widget_bottom/toolButton_music.png"));
          ui->toolButton_music->setIconSize(QPixmap(":/images/widget_bottom/toolButton_music.png").size());
          ui->toolButton_music->setAutoRaise(true);
          ui->toolButton_music->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
      
          ui->toolButton_statistics->setText(tr("数据统计"));
          ui->toolButton_statistics->setIcon(QPixmap(":/images/widget_bottom/toolButton_statistics.jpg"));
          ui->toolButton_statistics->setIconSize(QPixmap(":/images/widget_bottom/toolButton_statistics.jpg").size());
          ui->toolButton_statistics->setAutoRaise(true);
          ui->toolButton_statistics->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
      
          //设置首页中部选择房间的工具按钮的样式
          ui->widget_bedroom->setText(tr("卧室"));
          ui->widget_bedroom->setIcon(QPixmap(":/images/room_selection/widget_bedroom.jpg"));
          ui->widget_bedroom->setIconSize(QPixmap(":/images/room_selection/widget_bedroom.jpg").size());
          ui->widget_bedroom->setAutoRaise(true);
          ui->widget_bedroom->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
      
          ui->widget_kitchen->setText(tr("厨房"));
          ui->widget_kitchen->setIcon(QPixmap(":/images/room_selection/widget_kitchen.jpg"));
          ui->widget_kitchen->setIconSize(QPixmap(":/images/room_selection/widget_kitchen.jpg").size());
          ui->widget_kitchen->setAutoRaise(true);
          ui->widget_kitchen->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
      
          ui->widget_parlor->setText(tr("客厅"));
          ui->widget_parlor->setIcon(QPixmap(":/images/room_selection/widget_parlor.jpg"));
          ui->widget_parlor->setIconSize(QPixmap(":/images/room_selection/widget_parlor.jpg").size());
          ui->widget_parlor->setAutoRaise(true);
          ui->widget_parlor->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
      
          ui->widget_safety->setText(tr("安防"));
          ui->widget_safety->setIcon(QPixmap(":/images/room_selection/widget_safety.jpg"));
          ui->widget_safety->setIconSize(QPixmap(":/images/room_selection/widget_safety.jpg").size());
          ui->widget_safety->setAutoRaise(true);
          ui->widget_safety->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
      
          ui->widget_middle->setCurrentIndex(enum_widget_home);
          //qDebug()<<"E_HOME_WIDGET is = "<<enum_homepage;
          //要按下家居控制按钮后才进入中间部分样式。
      }
      
      void Widget::InitializeWidget()
      {
          new_settingDialog = new settingDialog;
          //m_statisticWidget = new StatisticWidget();
          new_bedRoomWidget = new bedroom();
          new_curtainWidget = new curtain_control();
          new_PlayMusicWidget = new play_music();
          //m_modelWidget = new ModelChooseWidget();
          new_parlourWidget = new Parlour();
          //m_kitchenWidget = new KitchenWidget();
          //ui->stackedWidget->addWidget(m_bedRoomWidget);
          ui->widget_middle->addWidget(new_curtainWidget);
          ui->widget_middle->addWidget(new_PlayMusicWidget);
          //ui->stackedWidget->addWidget(m_modelWidget);
          ui->widget_middle->addWidget(new_parlourWidget);
          //ui->stackedWidget->addWidget(m_kitchenWidget);
          //ui->stackedWidget->addWidget(m_statisticWidget);
      }
      
      void Widget::CounterTime()
      {
          new_timer = new QTimer(this);
          connect(new_timer,SIGNAL(timeout()),this,SLOT(ShowCurrentDataTime_SlotsAndStyle()));
          new_timer->start(1000);//定时1s钟。
      }
      
      /*void Widget::startAnimation()
      {
          QPropertyAnimation *animation = new QPropertyAnimation(ui->widget_middle->currentWidget(), "geometry");
          animation->setDuration(800);
          animation->setStartValue(QRect(0, 0,100, 30));
          animation->setEndValue(QRect(0, 0, 800, 360));
          animation->start();
      }*/
      
      void Widget::ShowCurrentDataTime_SlotsAndStyle()
      {
          ui->widget_hour->setText(QTime::currentTime().toString("hh"));
          ui->widget_min->setText(QTime::currentTime().toString("mm"));
          ui->widget_sec->setText(QTime::currentTime().toString("ss"));
          ui->widget_data->setText(QDate::currentDate().toString("yyyy年MM月dd日"));
          ui->widget_week->setText(QDate::currentDate().toString("dddd"));
          ui->widget_colon->setText(":");
          ui->widget_hour->setStyleSheet("color:#f0c051");
          ui->widget_sec->setStyleSheet("color:#f0c051");
          ui->widget_min->setStyleSheet("color:#f0c051");
          ui->widget_week->setStyleSheet("color:#f0c051");
          ui->widget_data->setStyleSheet("color:#f0c051");
          ui->widget_colon->setStyleSheet("color:#f0c051");
      
          QFont font("SimHei", 50, 50, false);
          ui->widget_colon->setFont(font);
      
      }
      
      void Widget::setCurrentWidget(enum_widget enum_widget_name)
      {
          //startAnimation();
          ui->widget_middle->setCurrentIndex(enum_widget_name);
      }
      
      void Widget::on_widget_setting_clicked()
      {
          new_settingDialog->show();
      }
      
      void Widget::on_widget_home_clicked()
      {
           this->setCurrentWidget(enum_widget_home);
           qDebug()<<"当前索引页 主页:="<<ui->widget_middle->currentIndex();
      }
      
      void Widget::on_widget_bedroom_clicked()
      {
            this->setCurrentWidget(enum_bedroom);
            qDebug()<<"当前索引页 卧室:="<<ui->widget_middle->currentIndex();
      }
      
      void Widget::on_widget_kitchen_clicked()
      {
      
      }
      
      void Widget::on_widget_safety_clicked()
      {
      
      }
      
      void Widget::on_widget_parlor_clicked()
      {
           this->setCurrentWidget(enum_parlour);
           qDebug()<<"当前索引页 客厅:="<<ui->widget_middle->currentIndex();
      }
      
      void Widget::on_toolButton_control_clicked()
      {
           this->setCurrentWidget(enum_toolButton_control);
           qDebug()<<"当前索引页 家居控制:="<<ui->widget_middle->currentIndex();
      }
      
      void Widget::on_toolButton_music_clicked()
      {
           ui->widget_middle->setCurrentIndex(enum_paly_music);
           qDebug()<<"当前索引页 音乐播放:="<<ui->widget_middle->currentIndex();
      }
      
      void Widget::on_toolButton_statistics_clicked()
      {
      
      }
      
      void Widget::on_toolButton_curtain_clicked()
      {
           ui->widget_middle->setCurrentIndex(enum_curtain_control);
           qDebug()<<"当前索引页 窗帘控制:="<<ui->widget_middle->currentIndex();
      }
      
      void Widget::on_toolButton_module_clicked()
      {
      
      }
      
      

      widget.h

      #ifndef WIDGET_H
      #define WIDGET_H
      
      #include <QWidget>
      #include <QTime>
      #include <QTimer>
      #include "curtain_control.h"
      #include "settingdialog.h"
      #include "play_music.h"
      #include "parlour.h"
      #include "bedroom.h"
      
      namespace Ui {
      class Widget;
      }
      
      class Widget : public QWidget
      {
          Q_OBJECT
      
          enum enum_widget
          {
              enum_toolButton_control = 0,    //控制主页
              enum_widget_home=1,             //首页
              enum_bedroom=2,                 //卧室
              enum_curtain_control=3,         //窗帘界面
              enum_paly_music=4,              //音乐播放界面
              //E_MODEL_WIDGET=5,             //模式控制
              enum_parlour=6,       //客厅
              //E_KITCHEN_WIDGET = 7,         //厨房
              //E_TEMPTURE = 8,               //统计
              //E_NIGHT_WIDGET,               //夜间模式
              //E_SECURITY_WIDGET,            //安防管理界面
          };
      
      public:
          explicit Widget(QWidget *parent = 0);
          ~Widget();
      
      private:
          Ui::Widget *ui;
      
          QTimer *new_timer;
      
          void  InitializeForm();
          void  CounterTime();
          void  InitializeWidget();
          void  setCurrentWidget(enum_widget enum_widget_name);
          //void  startAnimation();
      
      
      
          settingDialog *new_settingDialog;           //设置界面
          Parlour *new_parlourWidget;                 //客厅界面
          bedroom *new_bedRoomWidget;                 //卧室界面
          //KitchenWidget *m_kitchenWidget;                 //厨房界面
          //StatisticWidget *m_statisticWidget;             //统计界面
          curtain_control *new_curtainWidget;                 //窗帘界面
          //ModelChooseWidget *m_modelWidget;               //模式选择控制界面
           play_music *new_PlayMusicWidget;                 //音乐播放界面
      
      private slots:
          void ShowCurrentDataTime_SlotsAndStyle();
          void on_widget_setting_clicked();
          void on_widget_home_clicked();
          void on_widget_bedroom_clicked();
          void on_widget_kitchen_clicked();
          void on_widget_safety_clicked();
          void on_widget_parlor_clicked();
          void on_toolButton_control_clicked();
          void on_toolButton_music_clicked();
          void on_toolButton_statistics_clicked();
          void on_toolButton_curtain_clicked();
          void on_toolButton_module_clicked();
      };
      
      #endif // WIDGET_H
      
      

      Unable to display page
      0_1556165636713_问题1.PNG
      Interchanging pages
      1_1556165712355_问题4.PNG 0_1556165712354_问题3.PNG
      The index number is set to 6 but the printout is 0.
      0_1556165796756_问题2.PNG

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @Qt_HuangZiHan said in Stackwidget interface switching problem:

      enum_paly_music=4, //音乐播放界面
      //E_MODEL_WIDGET=5, //模式控制
      enum_parlour=6,

      Are you sure you actually have widget #6? You commented out enum value #5.
      You can check how many widgets you actually have printing https://doc.qt.io/qt-5/qstackedwidget.html#count-prop

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      Q 1 Reply Last reply
      0
      • jsulmJ jsulm

        @Qt_HuangZiHan said in Stackwidget interface switching problem:

        enum_paly_music=4, //音乐播放界面
        //E_MODEL_WIDGET=5, //模式控制
        enum_parlour=6,

        Are you sure you actually have widget #6? You commented out enum value #5.
        You can check how many widgets you actually have printing https://doc.qt.io/qt-5/qstackedwidget.html#count-prop

        Q Offline
        Q Offline
        Qt_HuangZiHan
        wrote on last edited by
        #3

        @jsulm I am annotating part 5, part 6 is not commented out, but part 6 prints the index number of part 0

           enum_toolButton_control = 0,
        //E_MODEL_WIDGET=5,             //模式控制
           enum_parlour=6, 
        

        The index number shown here should be 6, but it prints 0.
        0_1556169171316_439d1dce-2240-400f-90a3-c3e7269453ee-图片.png

        jsulmJ 1 Reply Last reply
        0
        • Q Qt_HuangZiHan

          @jsulm I am annotating part 5, part 6 is not commented out, but part 6 prints the index number of part 0

             enum_toolButton_control = 0,
          //E_MODEL_WIDGET=5,             //模式控制
             enum_parlour=6, 
          

          The index number shown here should be 6, but it prints 0.
          0_1556169171316_439d1dce-2240-400f-90a3-c3e7269453ee-图片.png

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @Qt_HuangZiHan I didn't say you commented out 6, I said you commented out 5.
          Did you try to print out https://doc.qt.io/qt-5/qstackedwidget.html#count-prop as I suggested?

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          Q 1 Reply Last reply
          0
          • jsulmJ jsulm

            @Qt_HuangZiHan I didn't say you commented out 6, I said you commented out 5.
            Did you try to print out https://doc.qt.io/qt-5/qstackedwidget.html#count-prop as I suggested?

            Q Offline
            Q Offline
            Qt_HuangZiHan
            wrote on last edited by
            #5

            @jsulm This is the result of the display, showing that the current number of parts is 5, but I enumerated six in the header file.

            当前索引页 家居控制:= 0
            当前部件数量= 5
            当前索引页 卧室:= 2
            当前部件数量= 5
            当前索引页 家居控制:= 0
            当前部件数量= 5
            当前索引页 客厅:= 0
            当前部件数量= 5
            当前索引页 音乐播放:= 4
            当前部件数量= 5
            当前索引页 窗帘控制:= 3
            当前部件数量= 5
            
            jsulmJ 1 Reply Last reply
            0
            • Q Qt_HuangZiHan

              @jsulm This is the result of the display, showing that the current number of parts is 5, but I enumerated six in the header file.

              当前索引页 家居控制:= 0
              当前部件数量= 5
              当前索引页 卧室:= 2
              当前部件数量= 5
              当前索引页 家居控制:= 0
              当前部件数量= 5
              当前索引页 客厅:= 0
              当前部件数量= 5
              当前索引页 音乐播放:= 4
              当前部件数量= 5
              当前索引页 窗帘控制:= 3
              当前部件数量= 5
              
              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #6

              @Qt_HuangZiHan If you have 5 widgets then you can't set current index to 6. If you have 5 widgets then the highest valid index is 4.

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              Q 1 Reply Last reply
              2
              • jsulmJ jsulm

                @Qt_HuangZiHan If you have 5 widgets then you can't set current index to 6. If you have 5 widgets then the highest valid index is 4.

                Q Offline
                Q Offline
                Qt_HuangZiHan
                wrote on last edited by
                #7

                @jsulm said in Stackwidget interface switching problem:

                If you have 5 widgets then you can't set current index to 6. If you have 5 widgets then the highest valid index is 4.

                The problem of page switching has been successfully solved. What you said makes sense. What I also found is that the order of enumeration should be the same as the order of the slot functions in the source file.

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved