Qt中的setViewport和setWindow 记录
https://blog.csdn.net/qq_38832450/article/details/103478571
https://blog.csdn.net/qjclinux/article/details/82864316
三步理解Qt中的setViewport和setWindow
https://blog.csdn.net/weixin_39583140/article/details/92798127
霍亚飞的《Qt快速开发》上称呼“窗口”和“视口”,窗口是逻辑坐标系统的(QRect),视口是物理坐标系统的块。
将窗口映射到视口,可以理解为将逻辑坐标上设定的块(QRect)进行放大缩小直至四个角分别与视口重合。
我们没有设置逻辑坐标系统和和物理坐标系统,那么默认情况下物理坐标系统和逻辑坐标系统重合,且左上角默认为(0,0)坐标,右下角为(widget(),heigth())即窗体的宽度和高度:此时绘制的方框是我们预期的,对窗体进行拖动放大缩小,绘制图形不变
QPainter 在逻辑坐标上面绘图,
painter.setWindow(QRect(10,10,400,400));
选取逻辑坐标系中一个区域,
这个区域,映射到 物理坐标系中。
painter.setViewport(QRect(0,0,400,400));
setViewport 是映射到的物理坐标系的区域。
就是有两张图纸
本来是重合的,
然后就 从第一张图纸中 割下来一块。
然后再 第二张图纸中用 铅笔画一个 矩形。
然后 将第一张纸中割下来的一块纸 ,通过拉伸,
完全覆盖到第二张纸画的矩形上面。
第二张纸画的矩形,会随着 第二张纸 拉伸变化,而变化。
第一张纸就是逻辑坐标系。setWindow
第二张纸就是 物理坐标。setViewport