C++ Qt加上“;行动“;动态添加QWidget的步骤

C++ Qt加上“;行动“;动态添加QWidget的步骤,c++,qt,C++,Qt,在我的ui中,我有一个按钮,它在单击时添加QComboBox(带有一些项目)和QLabel(带有一些文本)。变量“index”是添加的QComboxes和Qlabel的数量。“ol”是带有一些数据的qvector void MainWindow::on_iAddOtherButton_clicked() { QComboBox *p1 = new QComboBox(this); p1->setObjectName("comboBox"+QString::number(inde

在我的ui中,我有一个按钮,它在单击时添加QComboBox(带有一些项目)和QLabel(带有一些文本)。变量“index”是添加的QComboxes和Qlabel的数量。“ol”是带有一些数据的qvector

void MainWindow::on_iAddOtherButton_clicked()
{
   QComboBox *p1 = new QComboBox(this);
   p1->setObjectName("comboBox"+QString::number(index));
   QLabel *p2 = new QLabel(this);
   p2->setObjectName("othLabel"+QString::number(index));
   for(int i = 0; i < static_cast<int>(ol.size()); ++i){
      p1->addItem(ol.at(i).getName());
      ui->otherLayout->addWidget(p1,index+1,0);
   }
   p2->setText(...some text...));
   ui->otherLayout->addWidget(p2,index+1,1);
   index++;
}
void主窗口::在单击按钮时()
{
QCOMBOX*p1=新的QCOMBOX(本);
p1->setObjectName(“组合框”+QString::number(索引));
QLabel*p2=新的QLabel(此);
p2->setObjectName(“othLabel”+QString::number(索引));
对于(int i=0;iaddItem(ol.at(i).getName());
ui->otherLayout->addWidget(p1,索引+1,0);
}
p2->setText(…某些文本…);
ui->otherLayout->addWidget(p2,索引+1,1);
索引++;
}
这很有效,在布局中,它们是成对的,如下所示:

QCombox1 QLabel1

QCombox2 Qlabel2

现在我想更改qcombox1的值,之后,QLabel1的文本将自动更改为其他内容。 我尝试使用connect执行此操作,但
currentTextChanged()
上的QComboBox只发出带有新值的QString。是否有某种方法可以发出对象名称+新值?
或者有完全其他的解决方案可以做到这一点?

在插槽中,您可以调用以获取指向信号发送方的指针。从那里,您可以根据
sender()->objectName()
决定下一步要做什么


您也可以考虑在COMPBOX对象上使用<代码> StEdType(…)<代码>,将指针存储到QQualScript实例的指针中,向量是类成员。然后,您可以通过调用

sender()->property(…)
来检索插槽中的索引,并使用它从vector访问正确的QLabel小部件。

谢谢,这正是我想要的!您甚至可以通过将指向QLabel的指针直接存储在dynamic属性中来省略向量,但我自己还没有尝试过。但基本上,
QVariant
应该能够存储指向QObject的指针。