获取QPainter的可见区域

问题描述 投票:0回答:1

我有一个自己画的

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) 

正如您所见,这些函数都没有给出实际的可见区域,我如何获得它?

c++ qt qtgui qpainter qevent
1个回答
2
投票

我会尝试这个:

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

有关详细信息,请参阅 QPaintEvent::rect 文档

© www.soinside.com 2019 - 2024. All rights reserved.