• 5113阅读
  • 1回复

[提问]painter内容为什么显示不了,跪求 [复制链接]

上一主题 下一主题
离线glaubeliu
 

只看楼主 倒序阅读 楼主  发表于: 2011-06-16
#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)位置不能显示外,其它地方可以看到画的矩形和线条。
如何解决这个问题,向高手们跪求答案。
离线dbzhang800

只看该作者 1楼 发表于: 2011-06-16
用法错误:
你应该在你设为view的控件中去画,而不是QScrollArea这个东西中。
快速回复
限100 字节
 
上一个 下一个