vasu gupta
vasu gupta

Reputation: 315

how to make a widget of multiple other widget in QT

I am new in Qt and am using qt creator for the GUI designing, now i have to make a dynamic form in which a label,line edit and a button are added for each feature like length,width,etc.However the features are not static there may be 2 feature sometime and other time there might be 6 depending upon the xml file.thus i want to make a widget which for each feature creates an instance.

I have made basic structure of grouped widget using this:

cal_widget.h

#ifndef CAL_WIDGET_H
#define CAL_WIDGET_H

#include <QWidget>
#include<QVBoxLayout>
#include<QPushButton>
#include<QLineEdit>
class cal_widget : public QWidget
{
    Q_OBJECT
public:
    explicit cal_widget(QWidget *parent = nullptr);
    QVBoxLayout* layout;
    QPushButton* btn;
    QLineEdit* ln1;
    QLineEdit* ln2;

signals:

public slots:
};

#endif // CAL_WIDGET_H

cal_widget.cpp

#include "cal_widget.h"

cal_widget::cal_widget(QWidget *parent) : QWidget(parent)
{
    layout = new QVBoxLayout();
    btn= new QPushButton();
    ln1 = new QLineEdit("mm");
    ln2 = new QLineEdit("pix");

    layout->addWidget(ln1);
    layout->addWidget(btn);
    layout->addWidget(ln2);
    this->setLayout(layout);
}

and calling the above widget in another form mainwidget.cpp

{
QVBoxLayout* vbox = new QVBoxLayout();
cal_widget* cal1 = new cal_widget(this);
cal_widget* cal2 = new cal_widget(this);
cal_widget* cal3 = new cal_widget(this);
cal_widget* cal4 = new cal_widget(this);
cal_widget* cal5 = new cal_widget(this);
vbox->addWidget(cal1);
vbox->addWidget(cal2);
vbox->addWidget(cal3);
vbox->addWidget(cal4);
vbox->addWidget(cal5);
ui->scrollArea->setLayout(vbox);
}

i am getting result as :this

how can i get desired result

Upvotes: 0

Views: 738

Answers (1)

vasu gupta
vasu gupta

Reputation: 315

DONE

cal_widget.h

#ifndef CAL_WIDGET_H
#define CAL_WIDGET_H

#include <QWidget>
#include<QGroupBox>
#include<QGridLayout>
#include<QPushButton>
#include<QLineEdit>
class cal_widget : public QGroupBox
{
    Q_OBJECT
public:
    explicit cal_widget(const QString& feature, QWidget *parent = nullptr);
    QGridLayout* layout;
    QPushButton* btn;
    QLineEdit* ln1;
    QLineEdit* ln2;

signals:

public slots:
};

#endif // CAL_WIDGET_H

cal_widget.cpp

#include "cal_widget.h"

cal_widget::cal_widget(const QString& feature, QWidget *parent) : QGroupBox(parent)
{
    this->setTitle(feature);
    layout = new QGridLayout();
    btn= new QPushButton("OK");
    ln1 = new QLineEdit("mm");
    ln2 = new QLineEdit("pix");

    layout->addWidget(ln1,0,0);
    layout->addWidget(ln2,0,1);
    layout->addWidget(btn,1,0,1,2);
    this->setLayout(layout);
}

Upvotes: 2

Related Questions