如何在 visual studio c++ 表单动态 y 中添加多个链接工具

how to add multiple linked tools in visual studio c++ form dynamical y

这是我第一次在 visual studio 工作,之前我在 ubuntu 上用 qt 创建了一个 gui,但现在在 visual studio.

中创建了相同的图形用户界面

我无法理解如何制作一个新的 class 由两个编辑框和一个按钮组成的组合框,这样我就可以在我的 C++ 表单中动态添加整个单元。

我用我现在的QT代码来解释一下:

在 QT 版本中我创建了一个 class cal_widget:

cal_widget.h

///THIS CLASS IS USED AS A CALIBRATION WIDGET FOR EACH ENTRY IN CALIBRATION VECTOR AN OBJCT OF THIS CLASS IS MADE
/// TO GET PIXEL MEASUREMENT OF A PARTICULAR CALIBRATION FEATURE FROM ITS PHYSICAL MEASUREMENT
#ifndef CAL_WIDGET_H
#define CAL_WIDGET_H
#include <QWidget>
#include<QGroupBox>
#include<QGridLayout>
#include<QPushButton>
#include<QLineEdit>
#include<QLabel>
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;
    int cal_index;

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)
{

    /////ADD what'sthis and placeholder
    this->setTitle(feature);
    layout = new QGridLayout();
    btn= new QPushButton("SELECT ROI");
    ln1 = new QLineEdit();
    ln2 = new QLineEdit();
    ln2->setReadOnly(true);
    ln1->setPlaceholderText("Enter value in mm");
    layout->addWidget(ln1,0,0);
    layout->addWidget(ln2,0,1);
    layout->addWidget(btn,1,0,1,2);
    this->setLayout(layout);
}

并在我的主代码中添加这些:

  /////ADDING EVERY CALIBRATION TYPE ELEMENT ACCORDING TO CAMERA ID
    for(int i=0;i<cal.size();i++)
    {
        cal_wid.push_back(new cal_widget(cal[i]->name,this));
        cal_wid[cal_wid.size()-1]->cal_index=i;
        connect(cal_wid[cal_wid.size()-1]->btn,SIGNAL(clicked()),cal_map,SLOT(map()));
        cal_map->setMapping(cal_wid[cal_wid.size()-1]->btn,i);
        if(cal[i]->cam_id==1)
            vbox->addWidget(cal_wid[cal_wid.size()-1]);
        else if(cal[i]->cam_id==2)
            vbox2->addWidget(cal_wid[cal_wid.size()-1]);
        else if(cal[i]->cam_id==3)
            vbox3->addWidget(cal_wid[cal_wid.size()-1]);
        else if(cal[i]->cam_id==2)
            vbox3->addWidget(cal_wid[cal_wid.size()-1]);

     }

所以我看起来像这样:

现在我想在我在 visual studio 中创建的表单 (CLR) 中做同样的事情,谁能告诉我怎么做。

1,通过右键单击您的应用程序添加一个新项目,然后 select 用户控件:

2、将需要的控件拖到用户控件界面:

3、构建应用程序,您会发现工具箱中出现了一个用户控件,将其拖到窗体中即可实现。