I need to resize the window only with a 1:1 aspect ratio. Tried to implement in different ways, but it turns out recursion.
The last thing I stopped at:

widget.cpp:
Qt Code:
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include "QResizeEvent"
  4. #include "filterobject.h"
  5.  
  6. Widget::Widget(QWidget *parent) :
  7. QWidget(parent),
  8. ui(new Ui::Widget)
  9. {
  10. ui->setupUi(this);
  11. }
  12.  
  13. Widget::~Widget()
  14. {
  15. delete ui;
  16. }
  17.  
  18. bool FilterObject::eventFilter(QObject *watched, QEvent *event) {
  19. if(watched != target){//checks for correct target object.
  20. return false;
  21. }
  22.  
  23. if(event->type() != QEvent::Resize){//and correct event
  24. return false;
  25. }
  26. QResizeEvent *resEvent = static_cast<QResizeEvent*>(event);//then sets correct event type
  27.  
  28. goalHeight = 7*resEvent->size().width()/16;//calculates height, 7/16 of width in my case
  29. if(target->height()!=goalHeight){
  30. target->setFixedHeight(goalHeight);
  31. }
  32.  
  33. return true;
  34. };
  35.  
  36. void QWidget::resizeEvent(QResizeEvent *event){
  37. FilterObject *filter = new FilterObject();
  38. QWidget *targetWidget = new QWidget();//let it be target object
  39. filter->target=targetWidget;
  40. targetWidget->installEventFilter(filter);
  41. }
To copy to clipboard, switch view to plain text mode 
filterobject.h:

Qt Code:
  1. #include <QWidget>
  2.  
  3. class FilterObject:public QObject{
  4. public:
  5. QWidget *target = nullptr;//it holds a pointer to target object
  6. int goalHeight=0;
  7. FilterObject(QObject *parent=nullptr):QObject(parent){}//uses QObject constructor
  8. bool eventFilter(QObject *watched, QEvent *event) override;//and overrides eventFilter function
  9. };
To copy to clipboard, switch view to plain text mode 
I think that
Qt Code:
  1. if (event-> type ()! = QEvent :: Resize)
To copy to clipboard, switch view to plain text mode 
code does not work, because the function does not continue.