Więc tak mam w programie taką klasę:

class PaintArea : public QWidget
{
    Q_OBJECT
public:
    explicit PaintArea(QWidget *parent = 0);
    ~PaintArea(){};
    bool openImage(const QString &fileName);
    bool saveImage(const QString &fileName,const char *fileFormat);
    void setDrawingTool (int tool)
    {
        drawingTool=tool;
    }

public slots:
    void clearImage();
protected:
    void paintEvent(QPaintEvent *);
    void resizeEvent(QResizeEvent *);
    int drawingTool;
    bool drawing;
    QPoint startPoint;
    QPoint endPoint;
    QPen pent;
    QImage secImage;
    void drawLine();
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent * event);
    void mouseReleaseEvent(QMouseEvent * event);

public:
    QPen& getPen();
    void setPen(const QPen & pen);
    void setImage(const QImage& im)
    {
        image=im;
        update();
    }
private:
    QImage image;

signals:

public slots:

};

Służy ona do wyświetlania obrazu zawartego w zmiennej Image, rysowania po nim itp. W okienku narzędzi jest opcja "new", która ma tworzyć pusty obraz wypełniony białym tłem i wyświetlać go w oknie wygląda ona tak:

void MyWindow::New ()
{
    QImage temp(500,300,QImage::Format_ARGB32);
    temp.fill(qRgb(255,255,255));
    pa->setImage(temp); //pa to obiekt klasy Paint Area
}

Problem jest taki, że funkcja ta nie działa tak jak powinna, tzn jeżeli wcześniej wczytam jakiś obraz z pliku i potem kliknę na "New" wszystko jest ok. Obraz znika i pojawia się białe tło, ale gdy klikam "new" zaraz po włączeniu programu nic się nie dzieje. Co robię źle?
Jeszcze metoda paintevent:

void PaintArea::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawImage(QPoint(0,0),image);
}