我在中绘制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)
如您所见,这些功能都无法提供实际的可见区域,我该如何获得呢?
我会尝试这样做:
...
setMinimumHeight(3000);
setMinimumWidth(3000);
}
void MyWidget::paintEvent(QPaintEvent *paintEvent)
{
qDebug() << paintEvent.rect();
...
有关详细信息,请参见文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句