Here some example. There are 2 Widget: Widget and Widget2.
When resizing Widget w the new size is displayed in Widget2 w2.
In this example this signal and slot of this two widgets are connected via:
QObject::connect(&w, &Widget::resizeSignal,
&w2, &Widget2::onResizeSignal);
Hope this helps.
widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
protected:
void resizeEvent(QResizeEvent* e) override;
signals:
void resizeSignal(int w, int h);
};
class Widget2 : public QWidget
{
Q_OBJECT
public:
Widget2(QWidget *parent = 0);
~Widget2();
public slots:
void onResizeSignal(int w, int h);
protected:
void paintEvent(QPaintEvent*) override;
private:
int width = 0;
int height = 0;
};
#endif // WIDGET_H
widget.cpp:
#include "widget.h"
#include <QPainter>
#include <QResizeEvent>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{}
Widget::~Widget()
{}
void Widget::resizeEvent(QResizeEvent* e)
{
emit resizeSignal(e->size().width(), e->size().height());
QWidget::resizeEvent(e);
}
Widget2::Widget2(QWidget *parent)
: QWidget(parent)
{}
Widget2::~Widget2()
{}
void Widget2::onResizeSignal(int w, int h)
{
width = w;
height = h;
repaint();
}
void Widget2::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.setPen(QPen(Qt::red));
painter.drawText(QPoint(50, 50),
QString("(w,h) = (%1, %2)").arg(QString::number(width), QString::number(height)));
}
main.cpp:
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
Widget2 w2;
QObject::connect(&w, &Widget::resizeSignal,
&w2, &Widget2::onResizeSignal);
w.show();
w2.show();
return a.exec();
}