代码:
#include "widget.h"
#include <QPushButton>
#include <QVBoxLayout>
#include <QSignalMapper>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QSignalMapper *mapper = new QSignalMapper(this);
QVBoxLayout *layout = new QVBoxLayout;
for (int i = 0; i < 5; i++) {
QString name = "Button_" + QString::number(i + 1);
QPushButton *btn = new QPushButton(name, this);
layout->addWidget(btn);
mapper->setMapping(btn, name);
connect(btn, &QPushButton::clicked, mapper, QOverload<>::of(&QSignalMapper::map));
}
setLayout(layout);
connect(mapper, QOverload<const QString &>::of(&QSignalMapper::mapped), this, &Widget::btnSlot);
}
void Widget::btnSlot(const QString &name)
{
qDebug() << name;
}
效果: