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