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,则仍然是左上对齐。
客观评价:符合最终用户的思维,但对习惯了程序思维的程序员有点意外啊。