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
QtWS25 Last Chance

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