获取Qpainter的可见区域
Get visible area of QPainter
我在 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();
...
有关详细信息,请参见文档。
相关文章:
- 将QGraphicsItem的移动区域限制在多边形区域内
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- 在 Linux 中存储区域设置名称的缓冲区大小应该是多少?
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 两个连续的 OpenMP 并行区域会相互减慢速度
- 提升区域设置规范化带状字符,但不规范化重音
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 我可以将新的 std::tuple 放入内存映射区域,并在以后读回吗?
- 英特尔将指令存储在重叠的内存区域
- 如何给主窗口区域DKGRAY_BRUSH?
- 矢量擦除多个区域,2 x 擦除与单个分配?
- 错误:创建对象后无法分配区域
- 是否有任何区域设置会影响宽字符编码?
- GTKMM:拍摄绘图区域的屏幕截图?
- GTKMM:如何将键盘事件附加到绘图区域?
- 在 mmap'ed 区域上使用 memcpy 崩溃,for 循环不会
- QQuickPaintedItem 使用 QPainter 缓慢更新
- 创建一个类来访问和指定向量类型,并构建一个获取位置并为其分配区域的类
- 当DPI感知,全屏和无框时,客户区域在WM_NCACTIVATE上擦除
- 获取Qpainter的可见区域