catalog
QPainter
window,viewport
window()
是 painter的 (逻辑坐标系统), 他是 你进行绘图的 标准;
因为(逻辑坐标系统是你指定的), 即使在 物理的 不同分辨率的 坐标系统里, 他们对应的 “逻辑坐标系统”, 都是相同的viewport()
是 painter的 (实际 物理坐标系统), 表示: painter 可以控制的 区域!!
在默认情况下, viewport() == window()
;
看一个需求:
- 对于一个 可改变大小的widget, 我们指定 他中心的 (最大的)正方形
即该正方形的len = min( width, height)
为 painter的绘图区域
比如说, 该widget的size是: 100, 50
, 那么, 这个(最大正方形)的 位置是: (25, 0) (50, 50)
而默认情况下, painter.viewport() == { (0, 0), (100, 50)}
即, 整个widget区域
这是不可以的; 我们需求是: 让painter 只可以影响到, 这个正方形;
即:
void AnalogClock::paintEvent(QPaintEvent *){
QPainter painter( this);
{
// viewport
int len = qMin( this->width(), this->height());
QRect rect_viewport = QRect( (this->