Reputation: 315
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
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