获取Qpainter的可见区域

Get visible area of QPainter

本文关键字:区域 Qpainter 获取      更新时间:2023-10-16

我在 QScrollArea内有一个所有者绘制的 QWidget,所以绘画时,我只想绘画可见的零件。为此,我需要有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) 

,您可以看到,这些功能都没有给出实际的可见区域,我该如何获得?

我会尝试的:

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

有关详细信息,请参见文档。