Получить видимую область QPainter

У меня есть владелец QWidget внутри QScrollArea, поэтому при рисовании хочу рисовать только те части, которые видны. Для этого мне нужно иметь прямоугольник видимой области QPainter,

Единственными кандидатами были QPainter::viewport(), QPainter::window(), а также QPainter::clipBoundingRect(), поэтому я поместил этот код для регистрации их вывода:

    setMinimumHeight(3000);
setMinimumWidth(3000);
}
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
qDebug() << painter.viewport() << painter.window() << painter.clipBoundingRect();

Затем я переместил горизонтальную и вертикальную полосы прокрутки, но записанный вывод был странным:

QRect(0,0 3000x3000) QRect(0,0 3000x3000) QRectF(-21,-21 0x0)
QRect(0,0 3000x3000) QRect(0,0 3000x3000) QRectF(-1,-21 0x0)
QRect(0,0 3000x3000) QRect(0,0 3000x3000) QRectF(-1,-1 0x0)

Как вы видите, ни одна из этих функций не дает реальной видимой области, как мне ее получить?

2

Решение

Я бы попробовал это вместо этого:

...
setMinimumHeight(3000);
setMinimumWidth(3000);
}
void MyWidget::paintEvent(QPaintEvent *paintEvent)
{
qDebug() << paintEvent.rect();
...

Увидеть документация для деталей.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]