Cpp qt: signals

From wikinotes

includes

project/include/mybutton.h
#ifndef MYBUTTON_H
#define MYBUTTON_H

#include <QtWidgets/QPushButton>
#include <iostream>


class MyButton: public QPushButton
{
    Q_OBJECT;
    public:
        explicit MyButton (QWidget *parent=0);
    signals:
        void after_clicked();
    public slots:
        void print_clicked();
};

#endif

src

project/src/main.cpp
#include "mybutton.h"
#include <QtCore/QObject>
#include <QtWidgets/QApplication>


int main(int argc, char **argv)
{
    QApplication app(argc, argv);        
    MyButton btn;
    btn.show();

    // connections
    //
    // to test custom signals, we connect 'clicked'->'after_clicked'
    // then afterwards again 'after_clicked'->'print_clicked'
    QObject::connect(
        &btn, &MyButton::clicked, 
        &btn, &MyButton::after_clicked
    );
    QObject::connect(
        &btn, &MyButton::after_clicked,
        &btn, &MyButton::print_clicked
    );

    return app.exec();
}
project/src/mybutton.cpp
#include "mybutton.h"
#include <iostream>


MyButton::MyButton (QWidget *parent): 
    QPushButton::QPushButton(parent) // call orig constructor
{
    // additions to constructor
    this->setText("Click Me!");
}

void MyButton::print_clicked()
{
    std::cout << "clicked!" << std::endl;
}