C++ Qt加上“;行动“;动态添加QWidget的步骤
在我的ui中,我有一个按钮,它在单击时添加QComboBox(带有一些项目)和QLabel(带有一些文本)。变量“index”是添加的QComboxes和Qlabel的数量。“ol”是带有一些数据的qvectorC++ 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
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的指针。