Qt 和 C++:多个按钮上的信号和插槽
Qt and C++: Signal & Slot on multiple PushButtons
我按以下方式创建多个 QPushButton:
QList<QByteArray> pBList;
pBList= rec_data.split(',');
for (int i = 1; i < pBList.size() -1; i++){
QPushButton *newpB = new QPushButton(ui->verticalLayoutWidget);
newpB->setText(pBList[i]);
ui->verticalLayoutWidget->layout()->addWidget(newpB);
}
这工作正常并且 QPushButtons 显示在 GUI 上。
但是我如何将它们连接到 clicked()-Signal 和 Slot?
我用这种方法试过了,但是不行...
QObject::connect(ui->verticalLayoutWidget->layout()->itemAt(1)->widget(), SIGNAL(clicked()),this, SLOT(_on_send_name()));
感谢帮助
QList<QByteArray> pBList;
pBList= rec_data.split(',');
for (int i = 1; i < pBList.size() -1; i++){
QPushButton *newpB = new QPushButton(ui->verticalLayoutWidget);
newpB->setText(pBList[i]);
ui->verticalLayoutWidget->layout()->addWidget(newpB);
//This will CONNECT all buttons to a single slot
connect (newpB,&QPushButton::clicked,this,&YOUR_CLASS_NAME::_on_send_name);
}
您可以在 _on_send_name
中使用 sender()
来获取指向单击按钮的指针。但不推荐使用 sender()。 https://doc.qt.io/qt-5/qobject.html#sender
对于你的场景,我会选择 QSignalMapper
。
我按以下方式创建多个 QPushButton:
QList<QByteArray> pBList;
pBList= rec_data.split(',');
for (int i = 1; i < pBList.size() -1; i++){
QPushButton *newpB = new QPushButton(ui->verticalLayoutWidget);
newpB->setText(pBList[i]);
ui->verticalLayoutWidget->layout()->addWidget(newpB);
}
这工作正常并且 QPushButtons 显示在 GUI 上。 但是我如何将它们连接到 clicked()-Signal 和 Slot? 我用这种方法试过了,但是不行...
QObject::connect(ui->verticalLayoutWidget->layout()->itemAt(1)->widget(), SIGNAL(clicked()),this, SLOT(_on_send_name()));
感谢帮助
QList<QByteArray> pBList;
pBList= rec_data.split(',');
for (int i = 1; i < pBList.size() -1; i++){
QPushButton *newpB = new QPushButton(ui->verticalLayoutWidget);
newpB->setText(pBList[i]);
ui->verticalLayoutWidget->layout()->addWidget(newpB);
//This will CONNECT all buttons to a single slot
connect (newpB,&QPushButton::clicked,this,&YOUR_CLASS_NAME::_on_send_name);
}
您可以在 _on_send_name
中使用 sender()
来获取指向单击按钮的指针。但不推荐使用 sender()。 https://doc.qt.io/qt-5/qobject.html#sender
对于你的场景,我会选择 QSignalMapper
。