Хорошо, я предполагаю, что у вас есть class BtnBox
, и это уже есть в определении класса (обычно в файле .h):
signals:
void clickedBtn1();
Qt moc сгенерирует реализацию этого метода, здесь вам не нужно больше ничего делать. Но вам нужно получить этот сигнал. Во многих случаях вы бы добавили emit clickedBtn1();
в нужных местах, но в этом случае вы, вероятно, захотите сделать что-то подобное в конструкторе BtnBox::BtnBox
:
connect(ui->button1, SIGNAL(clicked()), this, SIGNAL(clickedBtn1()));
Подключение сигнала к сигналу просто сделает пересылку сигнала. Замените ui->button1
на правильный указатель на кнопку, что бы у вас не было в вашем коде.
Примечание о том, как не сделать это, просто чтобы дать немного пищи для размышлений: альтернативным способом было бы выставить кнопку 1 из класса, так что в вашем main()
тогда вы могли бы сделать что-то вроде этого: QObject::connect(panel->getButton1(), SIGNAL(clickedBtn1()), plot, SLOT(slotPrinter()));
. Но это, как правило, считается немного грязным, выставляя внутренности класса BtnBox
таким образом. Лучше выставить сигнал, и тогда коду, использующему класс, не нужно заботиться о том, как он излучается (например, из нескольких различных частей BtnBox
), или как может измениться внутренняя реализация BtnBox
(например, преобразование это в QML).