Russian Qt Forum

Qt => Вопросы новичков => Тема начата: sektor от Февраль 25, 2017, 23:30



Название: EventFiltr
Отправлено: sektor от Февраль 25, 2017, 23:30
Создал wizard, на которой находится label. Его использую для отображения изображения. Задача  - при изменения размеров окна изменялся и изображение не сохраня пропорции сторон. Для этого я использую EventFiltr. Но программа завершается крахом ((
Код:
#include "wizardremont.h"
#include "ui_wizardremont.h"
#include <QDebug>

WizardRemont::WizardRemont(QWidget *parent) :
    QWizard(parent),
    ui(new Ui::WizardRemont)
{
    ui->setupUi(this);

    ui->label->installEventFilter(this);
}

WizardRemont::~WizardRemont()
{
    delete ui;
}

bool WizardRemont::eventFilter(QObject *obj, QEvent *evt)
{
    if( evt->type() == QEvent::Resize)
    {
        QImage image(":/imeg/remont_4.png");
        ui->label->setPixmap(QPixmap::fromImage(image).scaled(width()/4,height()));
    }
    return WizardRemont::eventFilter(obj, evt);
}
 


Название: Re: EventFiltr
Отправлено: ssoft от Февраль 26, 2017, 00:11
Не нужно вызывать
Код:
return WizardRemont::eventFilter(obj, evt);
это приводит к рекурсивному зацикливанию

Нужно вернуть false или true, в зависимости от того требуется дальнейшая обработка события или нет.


Название: Re: EventFiltr
Отправлено: sektor от Февраль 26, 2017, 08:08
Спасибо, все получилось.