Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Adding layout to QStackedWidget

Adding layout to QStackedWidget

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
4 Posts 2 Posters 3.1k 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.
  • D Offline
    D Offline
    DivyaMuthyala
    wrote on last edited by
    #1

    Hi,

    I want to add qvboxlayout to qstackedwidget, can you please guide me?

    Thanks in advance.

    jsulmJ 1 Reply Last reply
    0
    • D DivyaMuthyala

      Hi,

      I want to add qvboxlayout to qstackedwidget, can you please guide me?

      Thanks in advance.

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

      @DivyaMuthyala You don't add a layout to stacked widget: you add widgets to stacked widget and those widgets then can have layouts then.

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

      1 Reply Last reply
      2
      • D Offline
        D Offline
        DivyaMuthyala
        wrote on last edited by
        #3

        Hi Jsulm,

        Here my requirement is to add dynamic widgets and buttons according to data from batabase. Here based on databse tables id iam creating buttons,its ok, but now I want to add back button to work with functionality to move previous page. How can i add, can you please guide me. I am attaching part of code :

        QString namestr;
        QString prod_id,vendor_id,catogery_id,sub_catogery_id;
        Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
        {
        ui->setupUi(this);
        ui->stackedWidget->setCurrentIndex(0);
        QSqlDatabase db;
        db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName("/root/evd1_6.db");
        QFileInfo checkFile("/root/evd1_6.db");
        if(checkFile.isFile())
        {
        if(db.open())
        {
        qDebug() << "Connected to database file";
        }
        }else{
        qDebug() << "Database file not found";
        }

        }

        Widget::~Widget()
        {
        delete ui;
        }

        void Widget::on_pushButton_2_clicked()
        {
        close();
        }

        void Widget::on_pushButton_clicked()
        {
        QSqlQuery query1("SELECT count(*) as Category_ID FROM CATEGORY");
        while (query1.next())
        {

            catogery_id=query1.record().value("Category_ID").toString();
            qDebug()<<"Catogery_id is"<<catogery_id;
        }
        QWidget *wid=new QWidget();
        wid->setGeometry(0,0,320,240);
        QVBoxLayout *layout=new QVBoxLayout();
        vendormapper = new QSignalMapper(this);
        
        QSqlQuery query("SELECT  Category_Name FROM CATEGORY");
        while (query.next())
        {
            ui->stackedWidget->setCurrentIndex(1);
            namestr=query.record().value(0).toString();
            qDebug()<<"name  is"<<namestr;
            QPushButton *button = new QPushButton();
            button->setText(namestr);
            connect(button, SIGNAL(clicked()), vendormapper, SLOT(map()));
            vendormapper->setMapping(button,namestr);
            QPushButton *backbutton= new QPushButton();
            backbutton->setText("Back");
           connect(backbutton,SIGNAL(clicked()),this,SLOT(backclicked()));
            layout->addWidget(button);
            layout->addWidget(backbutton);
             wid->setLayout(layout);
             wid->show();
        }
        connect(vendormapper, SIGNAL(mapped(const QString &)), this, SLOT(vendorselectionpage(const QString &)));
        

        }
        void Widget::backclicked()
        {
        qDebug()<<FUNCTION;
        ui->stackedWidget->setCurrentIndex(0);
        }

        void Widget::vendorselectionpage(const QString str)
        {
        QSqlQuery query1("SELECT Vendor_ID FROM VENDOR where Vendor_Name=?");
        query1.addBindValue(str);
        while (query1.next())
        {
        vendor_id=query1.record().value("Vendor_ID").toString();
        qDebug()<<"Vendor_id is"<<vendor_id;
        }

        QWidget *wid=new QWidget();
        wid->setGeometry(0,0,320,240);
        mapper = new QSignalMapper(this);
        QVBoxLayout *layout=new QVBoxLayout();
        QSqlQuery query("SELECT Vendor_Name FROM VENDOR");
        while (query.next())
        {
            namestr=query.record().value(0).toString();
            qDebug()<<"name  is"<<namestr;
            //ui->stackedWidget->setCurrentIndex(2);
            QPushButton *button = new QPushButton();
            button->setText(namestr);
            connect(button, SIGNAL(clicked()), mapper, SLOT(map()));
            mapper->setMapping(button,namestr);
            layout->addWidget(button);
            wid->setLayout(layout);
            wid->show();
        }
        connect(mapper, SIGNAL(mapped(const QString &)), this, SLOT(productselectionpage(const QString &)));
        

        }
        void Widget::productselectionpage(const QString str)
        {
        QWidget *wid=new QWidget();
        wid->setGeometry(0,0,320,240);
        QVBoxLayout *layout=new QVBoxLayout();
        productmapper = new QSignalMapper(this);

        QSqlQuery query("SELECT Vendor_ID FROM VENDOR where Vendor_Name=?");
        query.addBindValue(str);
        if(!query.exec())
        {
            qDebug("Vendor Name Not Found");
        }
        else
        {
            while(query.next())
            {
                qDebug()<<"VendorId is"<<query.value(0).toString();
                vendor_id = query.value(0).toString();
            }
        }
        query.clear();
        
        QSqlQuery query_Vendor("SELECT  Product_Name FROM PRODUCT where Vendor_ID=?");
        query_Vendor.addBindValue(vendor_id);
        if(!query_Vendor.exec())
        {
            qDebug("Product Not Found");
        }
        else
        {
            while (query_Vendor.next())
            {
                namestr=query_Vendor.record().value(0).toString();
                qDebug()<<"name  is"<<namestr;
                //ui->stackedWidget->setCurrentIndex(2);
                QPushButton *button = new QPushButton();
                button->setText(namestr);
                connect(button, SIGNAL(clicked()), productmapper, SLOT(map()));
                productmapper->setMapping(button,namestr);
                layout->addWidget(button);
                wid->setLayout(layout);
                wid->show();
            }
        }
        connect(productmapper, SIGNAL(mapped(const QString &)), this, SLOT(subCatogerySelectionPage(const QString &)));
        

        }

        void Widget::subCatogerySelectionPage(const QString str)
        {
        qDebug()<<"Product Selected is"<<str;
        QSqlQuery query1("SELECT Prod_ID,Vendor_ID,Category_ID FROM PRODUCT where Product_Name=?");
        query1.addBindValue(str);
        if(!query1.exec())
        {
        qDebug("Vendor Name Not Found");
        }
        else
        {
        while(query1.next())
        {
        qDebug()<<"ProdId is"<<query1.value(0).toString();
        prod_id = query1.value(0).toString();
        vendor_id = query1.value(1).toString();
        catogery_id = query1.value(2).toString();
        }
        }

        QWidget *wid=new QWidget();
        wid->setGeometry(0,0,320,240);
        QVBoxLayout *layout=new QVBoxLayout();
        mapper = new QSignalMapper(this);
        
        qDebug()<<"Prod_Id"<<prod_id<<"Vendor_Id"<<vendor_id<<"Catogery_Id"<<catogery_id;
        QSqlQuery subCatogery_query("SELECT Subcat_Name FROM SUBCATEGORY where Prod_ID=? and Vendor_ID=? and Category_ID=?");
        subCatogery_query.addBindValue(prod_id);
        subCatogery_query.addBindValue(vendor_id);
        subCatogery_query.addBindValue(catogery_id);
        
        if(!subCatogery_query.exec())
        {
            qDebug("Sub-Catogery Name not found");
        }
        else
        {
            qDebug("Completed Query");
            while(subCatogery_query.next())
            {
        
                qDebug()<<"Sub-Cat name is"<<subCatogery_query.record().value(0).toString();
                namestr=subCatogery_query.record().value(0).toString();
                qDebug()<<"name  is"<<namestr;
               // ui->stackedWidget->setCurrentIndex(3);
                QPushButton *button = new QPushButton();
                button->setText(namestr);
                connect(button, SIGNAL(clicked()), mapper, SLOT(map()));
                mapper->setMapping(button,namestr);
                layout->addWidget(button);
                wid->setLayout(layout);
                wid->show();
            }
        }
        
        jsulmJ 1 Reply Last reply
        0
        • D DivyaMuthyala

          Hi Jsulm,

          Here my requirement is to add dynamic widgets and buttons according to data from batabase. Here based on databse tables id iam creating buttons,its ok, but now I want to add back button to work with functionality to move previous page. How can i add, can you please guide me. I am attaching part of code :

          QString namestr;
          QString prod_id,vendor_id,catogery_id,sub_catogery_id;
          Widget::Widget(QWidget *parent) :
          QWidget(parent),
          ui(new Ui::Widget)
          {
          ui->setupUi(this);
          ui->stackedWidget->setCurrentIndex(0);
          QSqlDatabase db;
          db = QSqlDatabase::addDatabase("QSQLITE");
          db.setDatabaseName("/root/evd1_6.db");
          QFileInfo checkFile("/root/evd1_6.db");
          if(checkFile.isFile())
          {
          if(db.open())
          {
          qDebug() << "Connected to database file";
          }
          }else{
          qDebug() << "Database file not found";
          }

          }

          Widget::~Widget()
          {
          delete ui;
          }

          void Widget::on_pushButton_2_clicked()
          {
          close();
          }

          void Widget::on_pushButton_clicked()
          {
          QSqlQuery query1("SELECT count(*) as Category_ID FROM CATEGORY");
          while (query1.next())
          {

              catogery_id=query1.record().value("Category_ID").toString();
              qDebug()<<"Catogery_id is"<<catogery_id;
          }
          QWidget *wid=new QWidget();
          wid->setGeometry(0,0,320,240);
          QVBoxLayout *layout=new QVBoxLayout();
          vendormapper = new QSignalMapper(this);
          
          QSqlQuery query("SELECT  Category_Name FROM CATEGORY");
          while (query.next())
          {
              ui->stackedWidget->setCurrentIndex(1);
              namestr=query.record().value(0).toString();
              qDebug()<<"name  is"<<namestr;
              QPushButton *button = new QPushButton();
              button->setText(namestr);
              connect(button, SIGNAL(clicked()), vendormapper, SLOT(map()));
              vendormapper->setMapping(button,namestr);
              QPushButton *backbutton= new QPushButton();
              backbutton->setText("Back");
             connect(backbutton,SIGNAL(clicked()),this,SLOT(backclicked()));
              layout->addWidget(button);
              layout->addWidget(backbutton);
               wid->setLayout(layout);
               wid->show();
          }
          connect(vendormapper, SIGNAL(mapped(const QString &)), this, SLOT(vendorselectionpage(const QString &)));
          

          }
          void Widget::backclicked()
          {
          qDebug()<<FUNCTION;
          ui->stackedWidget->setCurrentIndex(0);
          }

          void Widget::vendorselectionpage(const QString str)
          {
          QSqlQuery query1("SELECT Vendor_ID FROM VENDOR where Vendor_Name=?");
          query1.addBindValue(str);
          while (query1.next())
          {
          vendor_id=query1.record().value("Vendor_ID").toString();
          qDebug()<<"Vendor_id is"<<vendor_id;
          }

          QWidget *wid=new QWidget();
          wid->setGeometry(0,0,320,240);
          mapper = new QSignalMapper(this);
          QVBoxLayout *layout=new QVBoxLayout();
          QSqlQuery query("SELECT Vendor_Name FROM VENDOR");
          while (query.next())
          {
              namestr=query.record().value(0).toString();
              qDebug()<<"name  is"<<namestr;
              //ui->stackedWidget->setCurrentIndex(2);
              QPushButton *button = new QPushButton();
              button->setText(namestr);
              connect(button, SIGNAL(clicked()), mapper, SLOT(map()));
              mapper->setMapping(button,namestr);
              layout->addWidget(button);
              wid->setLayout(layout);
              wid->show();
          }
          connect(mapper, SIGNAL(mapped(const QString &)), this, SLOT(productselectionpage(const QString &)));
          

          }
          void Widget::productselectionpage(const QString str)
          {
          QWidget *wid=new QWidget();
          wid->setGeometry(0,0,320,240);
          QVBoxLayout *layout=new QVBoxLayout();
          productmapper = new QSignalMapper(this);

          QSqlQuery query("SELECT Vendor_ID FROM VENDOR where Vendor_Name=?");
          query.addBindValue(str);
          if(!query.exec())
          {
              qDebug("Vendor Name Not Found");
          }
          else
          {
              while(query.next())
              {
                  qDebug()<<"VendorId is"<<query.value(0).toString();
                  vendor_id = query.value(0).toString();
              }
          }
          query.clear();
          
          QSqlQuery query_Vendor("SELECT  Product_Name FROM PRODUCT where Vendor_ID=?");
          query_Vendor.addBindValue(vendor_id);
          if(!query_Vendor.exec())
          {
              qDebug("Product Not Found");
          }
          else
          {
              while (query_Vendor.next())
              {
                  namestr=query_Vendor.record().value(0).toString();
                  qDebug()<<"name  is"<<namestr;
                  //ui->stackedWidget->setCurrentIndex(2);
                  QPushButton *button = new QPushButton();
                  button->setText(namestr);
                  connect(button, SIGNAL(clicked()), productmapper, SLOT(map()));
                  productmapper->setMapping(button,namestr);
                  layout->addWidget(button);
                  wid->setLayout(layout);
                  wid->show();
              }
          }
          connect(productmapper, SIGNAL(mapped(const QString &)), this, SLOT(subCatogerySelectionPage(const QString &)));
          

          }

          void Widget::subCatogerySelectionPage(const QString str)
          {
          qDebug()<<"Product Selected is"<<str;
          QSqlQuery query1("SELECT Prod_ID,Vendor_ID,Category_ID FROM PRODUCT where Product_Name=?");
          query1.addBindValue(str);
          if(!query1.exec())
          {
          qDebug("Vendor Name Not Found");
          }
          else
          {
          while(query1.next())
          {
          qDebug()<<"ProdId is"<<query1.value(0).toString();
          prod_id = query1.value(0).toString();
          vendor_id = query1.value(1).toString();
          catogery_id = query1.value(2).toString();
          }
          }

          QWidget *wid=new QWidget();
          wid->setGeometry(0,0,320,240);
          QVBoxLayout *layout=new QVBoxLayout();
          mapper = new QSignalMapper(this);
          
          qDebug()<<"Prod_Id"<<prod_id<<"Vendor_Id"<<vendor_id<<"Catogery_Id"<<catogery_id;
          QSqlQuery subCatogery_query("SELECT Subcat_Name FROM SUBCATEGORY where Prod_ID=? and Vendor_ID=? and Category_ID=?");
          subCatogery_query.addBindValue(prod_id);
          subCatogery_query.addBindValue(vendor_id);
          subCatogery_query.addBindValue(catogery_id);
          
          if(!subCatogery_query.exec())
          {
              qDebug("Sub-Catogery Name not found");
          }
          else
          {
              qDebug("Completed Query");
              while(subCatogery_query.next())
              {
          
                  qDebug()<<"Sub-Cat name is"<<subCatogery_query.record().value(0).toString();
                  namestr=subCatogery_query.record().value(0).toString();
                  qDebug()<<"name  is"<<namestr;
                 // ui->stackedWidget->setCurrentIndex(3);
                  QPushButton *button = new QPushButton();
                  button->setText(namestr);
                  connect(button, SIGNAL(clicked()), mapper, SLOT(map()));
                  mapper->setMapping(button,namestr);
                  layout->addWidget(button);
                  wid->setLayout(layout);
                  wid->show();
              }
          }
          
          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by jsulm
          #4

          @DivyaMuthyala Just put back button and stacked widget into a vbox layout.
          Why do you call

          wid->setLayout(layout);
          wid->show();
          

          in the loop? It does not make any sense.

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

          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