Если размер окна постоянно изменяется после того, как setImage был вызван хотя бы один раз, приложение случайным образом выдает ошибку сегментации.Появляется отладчик, указывающий, что ошибочной строкой является вызов image.scaled () в canvas.cpp.Я не уверен, как отследить это дальше.
canvas.h
#ifndef CANVAS_H
#define CANVAS_H
#include <QGLWidget>
class Canvas : public QGLWidget
{
Q_OBJECT
public:
explicit Canvas(QWidget *parent = 0);
void paintEvent(QPaintEvent* event);
public slots:
void setImage(const QImage& image);
private:
QImage image;
};
#endif // CANVAS_H
canvas.cpp
#include "canvas.h"
Canvas::Canvas(QWidget *parent) :
QGLWidget(parent)
{
}
void Canvas::setImage(const QImage& image) {
this->image = image;
this->update();
}
void Canvas::paintEvent(QPaintEvent *) {
QPainter painter(this);
QSize size = this->size();
if (!image.isNull()) {
QImage scaled = image.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
painter.drawImage(0, 0, scaled);
}
}