使每个按钮的QT设计器窗体不同

Make QT Designer Form different for each button

本文关键字:窗体 QT 按钮      更新时间:2023-10-16

我有两个按钮和一个用户表单界面:Form2。我想看到不同的文本创建表单2。让我们看看示例。

QVector<QString> text { "Iter FIRST", "Iter SECOND" };
for(size_t i = 0; i < 2; ++i)
{
Form2 * form2 = new Form2(); //creating form
connect(this, &MainWindow::SendCurretText, form2, 
&Form2::ShowText);//connect to the second form`(textEdit)
emit MainWindow::SendCurretText(text[i]);
QPushButton *btnShowForm = new QPushButton(this);
btnShowForm->setGeometry(i + 40, i + 100, 50, 50);
connect(btnShowForm, &QPushButton::clicked, this, [=]()
{
form2->show();
});
}//end for()

结果:
点击按钮1,我看到"Iter SECOND">
单击按钮2,我看到了"Iter SECOND">

预期结果:
点击按钮1我看到"Iter FIRST">
单击按钮2我看到"Iter SECOND">

++i不是i++。试试这个:

QStringList text; text << "Iter FIRST" <<  "Iter SECOND";
for(qint32 i = 0; i < 2; i++)
{
Form2 * form2 = new Form2(); //creating form
connect(this, &MainWindow::SendCurretText, form2, 
&Form2::ShowText);//connect to the second form`(textEdit)
emit MainWindow::SendCurretText(text.at(i));
QPushButton *btnShowForm = new QPushButton(this);
btnShowForm->setGeometry(i + 40, i + 100, 50, 50);
connect(btnShowForm, &QPushButton::clicked, this, [=](){ form2->show(); } );
}//end for()