如何在 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、构建应用程序,您会发现工具箱中出现了一个用户控件,将其拖到窗体中即可实现。
这是我第一次在 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、构建应用程序,您会发现工具箱中出现了一个用户控件,将其拖到窗体中即可实现。