Cześć, potrzebuję rozbić rysowanie na dwie klasy, napisałem więc sobie krótki program, który jak łatwo się domyśleć nie działa. Przy próbie odpalenia wywala mi segmentation fault. Próbowałem go z debugować, ale wywala mi tylko na linii 0, w formie rozkazów asemblerowych jakąś instrukcję dotyczącą przenoszenia między rejestrami, więc nic mi to nie pomogło. Program jest krótki więc zamieszczę poniżej cały.
painter.h :
#ifndef PAINTER_H
#define PAINTER_H
#include <QWidget>
class Painter : public QWidget {
Q_OBJECT
public:
QWidget *paintDevice;
Painter(QWidget *parent = 0);
virtual void paintEvent(QPaintEvent *);
QPainter *painter;
QWidget *paintParent;
double hh;
double ww;
void draw(QPaintEvent *,QWidget *);
};
#endif // PAINTER_H
painter.cpp
#include<QtGui>
#include "painter.h"
Painter::Painter(QWidget *parent) :
QWidget(parent)
{
setMinimumSize(400,400);
setBackgroundRole(QPalette::Base);
}
void Painter::draw(QPaintEvent *event,QWidget *parent){
paintParent = parent;
this->paintEvent(event);
}
void Painter::paintEvent(QPaintEvent *){
painter = new QPainter(paintParent);
ww = paintParent->width()/10;
hh = paintParent->height()/10;
}
painterline.h :
#ifndef PAINTERLINE_H
#define PAINTERLINE_H
#include<QWidget>
#include"painter.h"
class PainterLine : public Painter {
Q_OBJECT
public:
void paintEvent(QPaintEvent *);
};
#endif // PAINTERLINE_H
painterline.cpp :
#include<QtGui>
#include "painterline.h"
void PainterLine::paintEvent(QPaintEvent *event){
draw(event,this);
painter->drawRect(QRect(50,50,ww,hh));
}
main.cpp :
#include<QApplication>
#include"painterline.h"
int main(int argc,char *argv[]){
QApplication app(argc,argv);
PainterLine *rysuj;
rysuj->show();
return app.exec();
}