Вы должны подключить сигналы clicked()
, излучаемые каждым QPushButton
, к слоту, который обновляет текст QLabel
.
Краткий пример
В родительском конструкторе:
connect(qpb1, &QPushButton::clicked, this, &MyClass::handleQLabel);
И возможная реализация слота:
void MyClass::handleQLabel()
{
QPushButton * qpb = qobject_cast<QPushButton*>(sender()); // Find the sender of the signal
if(qpb != nullptr)
this->myLabel->setText(qpb->text()); // Write anything you want in the QLabel
else
{
// Do what you want.
}
}
Это сделает работу.
Конечно, если вы не хотите использовать sender()
(например, для многопоточности), вы можете либо создать один слот с помощью QPushButton
и сделать такое же количество connect
(тяжелый и довольно грязный обходной путь). ) или создайте подкласс QPushButton
, чтобы добавить настраиваемый сигнал для генерации с идентификатором QPushButton
и получить его со слотом, например.
Надеюсь, это поможет:)