视口和窗口实际上是同一区域
视口使用的是物理坐标,而窗口使用的是逻辑坐标,可以无视widget的放大和缩小
int W=width();
int H=height();
int side=qMin(W,H);//去长和宽的小值
QRect rect((W-side)/2, (H-side)/2,side,side); //viewport矩形区
painter.drawRect(rect); //Viewport大小
// painter.setViewport((W-side)/2, (H-side)/2,side,side);//设置Viewport,物理坐标范围
painter.setViewport(rect);//设置Viewport
painter.setWindow(-100,-100,200,200); // 设置窗口大小,逻辑坐标