#ifndef SCROLLAREA_H
#define SCROLLAREA_H
#include <QScrollArea>
#include <QPainter>
#include <QPixmap>
namespace Ui {
class ScrollArea;
}
class ScrollArea : public QScrollArea{
Q_OBJECT
public:
explicit ScrollArea(QWidget *parent = 0);
~ScrollArea();
private:
Ui::ScrollArea *ui;
protected:
void paintEvent ( QPaintEvent * event );
private:
void paintTest();
QWidget *view;
QPainter *painter;
QPixmap *pixmap;
};
#endif // SCROLLAREA_H
#include "scrollarea.h"
#include "ui_scrollarea.h"
ScrollArea::ScrollArea(QWidget *parent) :
QScrollArea(parent),
ui(new Ui::ScrollArea)
{
ui->setupUi(this);
this->setMinimumSize(360,320);
this->setMaximumSize(360,320);
this->setGeometry(20,20,360,320);
view = new QWidget(this);
this->view->setMaximumSize(500,500);
this->view->setMinimumSize(500,500);
this->setWidget(view);
this->setWidgetResizable(true);
this->setAttribute(Qt::WA_DeleteOnClose);
this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
pixmap = new QPixmap(500,500);
paintTest();
}
void ScrollArea::paintEvent ( QPaintEvent * event )
{
painter = new QPainter(this->viewport());
painter->drawPixmap(0,0,*pixmap);
}
void ScrollArea::paintTest()
{
QPainter *p = new QPainter(pixmap);
p->setPen(Qt::red);
p->setBrush(Qt::blue);
p->drawRect(0,0,100,100);
p->drawLine(0,0,360,320);
update();
delete p;
}
ScrollArea::~ScrollArea()
{
delete ui;
}
大侠们:为什么现在画的线和矩形显示不出来呢?
而改成:this->view->setMaximumSize(50,50);
this->view->setMinimumSize(50,50);后除(0,0)-(50,50)位置不能显示外,其它地方可以看到画的矩形和线条。
如何解决这个问题,向高手们跪求答案。