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;
}