qt中的QGraphicsView+Scene+item 三剑客

本折腾个够呛

基本概念:还是比较清晰的,M-V模型,View充当显示,Scene是Model,至于Item则是一个个的具体“物体”

细节就不是那么简单直接了

(1)画布的大小。scene就是画布,大小是可以自行决定的,可以扩大缩小。至少在全部scene在view中可见时,大小不影响画的内容 。

(2)坐标系:V-S-I都是直角坐标,原点是TopLeft,向右下延展,和Win32中的类似。

注意:不同的对象的原点是不一样的。 

比如,scene::addItem的操作,item的位置就是用scene的坐标系,而不是view(后面有内容)

(3)view和scene:QGraphicsView::setScene进行绑定。

注意:默认情况下,如果view可以完全显示scene的内容,则scene的按照居中对齐的方式进行显示;

也就是说scene的中心点和view的中心点是重叠的,但scene的原点仍然是自身sceneRect的左上角。这一点十分坑爹。

可以通过QGraphicsView::setAlignment进行设置

注意:这里提到的是“能完全显示”,而不是尺寸;换句话说,如果因为scene被缩小而完全显示,也是居中显示的。 

注意:这个对齐方式仅用于上述情况,如果scene尺寸大于view,则仍然是左上对齐。

客观评价:符合最终用户的思维,但对习惯了程序思维的程序员有点意外啊。 

 

 

 

posted @ 2012-09-06 14:30  kevinzhwl  阅读(1893)  评论(0编辑  收藏