QPainter的Window()和viewPort()到底是什么东西?解决办法

QPainter的Window()和viewPort()到底是什么东西?
如有以下这段代码:
  QPrintDialog printDialog(&printer, this);
  if (printDialog.exec()) {
  QPainter painter(&printer);
  QRect rect = painter.viewport();
  QSize size = image.size();
  size.scale(rect.size(), Qt::KeepAspectRatio);
  painter.setViewport(rect.x(), rect.y(),
  size.width(), size.height());
  painter.setWindow(image.rect());
  painter.drawImage(0, 0, image);
  }

其中viewPort视口和window窗口都是什么东西啊?设置它们都有什么效果?我上网查了很多资料还看了教材~但小弟不才都没看懂,忘大侠用比较通俗的语言帮我解释一下


------解决方案--------------------
直接看 manual吧,哪一点儿看不懂可以提出来
http://doc.qt.nokia.com/latest/coordsys.html#window-viewport-conversion
------解决方案--------------------
window()返回的是作为窗口框架的一个widget, 也许是用来承载当前widget的窗口, 如果当前widget本身是个单独的窗口框架的话, 返回的会是它自身~`` 例如QWidget、QDialog、QLabel....
而viewPort()返回的好比像MFC中单文档那个工作区一样, 一般像QTextEdit、QTableWidget....返回它们的可编辑区域的widget~`` 这也是为什么有时单纯想通过重载paintEvent()在这类widget中绘制一些图形时不显示的原因 :)
------解决方案--------------------
简单说viewport是物理坐标系,window是逻辑坐标系