Есть форма, на которой много чего, включая один пустой виджет graphArea. QPainter создается следующим образом:
fPainter = new QPainter(ui->graphArea);
После чего рисую прямоугольник:
fPainter->begin(this);
fPainter->setRenderHint(QPainter::Antialiasing);
fPainter->setBrush(QColor(255,255,255));
fPainter->drawRect(0,0,ui->graphArea->width(),ui->graphArea->height());
fPainter->end();
А рисуется он начиная от левого верхнего угла формы, а не на виджете.
Как заставить его рисовать на виджете? На чем вообще лучше рисовать?
UPD: По совету @1101_debian пытаюсь рисовать теперь на QGraphicsView.
Вот весь код paintEvent:
fPainter = new QPainter(this);
QGraphicsView *pGraphArea = ui->graphArea;
fPainter->begin(pGraphArea);
fPainter->setRenderHint(QPainter::Antialiasing);
fPainter->setPen(Qt::black);
fPainter->drawRect(pGraphArea->x(),pGraphArea->y(),pGraphArea->width(),pGraphArea->height());
for (int i= pGraphArea->x(); i < pGraphArea->width(); i += 96/2.54)
for (int j = pGraphArea->y(); j < pGraphArea->height(); j += 96/2.54)
fPainter->drawPoint(i,j);
fPainter->end();
event->ignore();
Получилось вот так:
т.е. рисуется, но опять же за пределами QGraphicsView. Что не так делаю?
Ответ
Попробуйте передать в fPainter->begin ваш виджет на котором вы хотите рисовать. fPainter->begin(ui->graphArea); А вообще я бы для этого использовал QGraphicsScene и QGraphicsView UPD. Официальный мануал от Nokia
Комментариев нет:
Отправить комментарий