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);
}