12.1 Qt 窗口与视口 详解
参考:http://www.lgwimonday.cn/archives/1383

举例说明:
0.前言,例子使用的是一张200x200的图片,整个界面的大小(也就是显示设备)为400x400。
可以这么理解,假设我们有一张地图(painter绘制的原始内容),想要把河北区域在电脑屏幕的x:100, y:100,w:200,h:200的区域显示出来,于是用手机拍下了河北区域(窗口)的照片(假设窗口大小为1000x1000),然后把这张图片缩放为200x200并放到电脑屏幕100,100的位置(视口)
1. 未对窗口视口进行设置时,窗口视口的大小位置都与显示设备一致,也就是x:0, y:0, w:400, h:400。
以默认窗口视口参数在0,0点显示这张图,如上面所述,我们将这张图片看作一张地图。

2. 使用setWindow设置窗口区域为x:50, y:50, w:100, h:100,从地图上看,这个区域是6、7、10、11所在区域,不对视口进行设置,即保持原始值:x:0, y:0, w:400, h:400。
那么这个窗口的意义就是把6、7、10、11这个区域完全显示到视口上(即占满整个视口),由于视口等于显示设备,所以也就铺满了整个显示设备

3. 视口的意义是设置窗口的内容显示到显示设备的哪个位置,以及以多大的范围来显示窗口的内容。
接着上面的例子,我们将视口的区域设置为x:100, y:100, w:400, h:400,也就是把视口设置到了100,100的位置,显示范围与步骤2中一样(所以不会被缩放),所以这个设置相当于把步骤2显示的内容平移到了100,100的位置

4.接着步骤2中设置,也就是窗口内容6、7、10、11。我们将视口设置为x:200, y:200, w:200, h:200,即把6、7、10、11显示到右下角的区域中
注:为什么窗口的内容是6、7、10、11,但是把1、2、3、5、9也显示出来了呢?因为设置窗口时,并不会把窗口区域外面的内容都截掉,只要窗口外面的内容没有超出界面(也就是显示设备)的坐标,那么就能够被显示出来

