• 8350阅读
  • 7回复

qt如何实现可以缩放的卡尺? [复制链接]

上一主题 下一主题
离线lljzhgxd
 
只看楼主 倒序阅读 楼主  发表于: 2010-01-20
窗口中央是一个QGraphicsScene,里面画了很多方块形成矩阵,通过右边的放大缩小拉杆矩阵中的方块可以放大或缩小。
现在想在红色的部分加上横向卡尺和纵向卡尺(类似excel),同时卡尺要可以随着右边的放大缩小拉杆进行相应的放大缩小(类似excel)。

目前尝试了动态在Scene中和画方块一样画出了卡尺,然后针对滚动条的值的变化确定卡尺一定在Scene的view的最上和最左。
但是一旦使用放大缩小拉杆使得Scene中的矩阵放大或缩小,卡尺的位置就会变化,不再固定在Scene的view的最上和最左。

请问如何在”无论怎么拉动滚动条和放大缩小拉杆“的情况下,都可以使得Scene中的item存在于Scene的view的最上和最左位置,并且卡尺的宽度也随之改变呢?

或者对于在Scene中使用卡尺有什么特定的做法呢?

感激大家了。
[ 此帖被lljzhgxd在2010-01-20 17:36重新编辑 ]
离线water_wf

只看该作者 1楼 发表于: 2010-01-20
如果把标尺做成item,当然会随着zoom变化而变换。
其实你做个布局左边和上边用成widget不就可以了吗,或者再用一个不能zoom的scene来做标尺,布局即可。
离线lljzhgxd
只看该作者 2楼 发表于: 2010-01-20
需要的是卡尺也可以随着矩阵的缩放而缩放,但是位置始终要保持在最上和最左。
离线dbzhang800

只看该作者 3楼 发表于: 2010-01-20
其实和那两个滚动条很像。

都要求位置固定
都要求场景视图大小变化时能做出响应
离线lljzhgxd
只看该作者 4楼 发表于: 2010-01-21
但是不能用滚动条做吧
离线lljzhgxd
只看该作者 5楼 发表于: 2010-01-21
人工顶,求解决,3q3q3q。
离线2nd090215
只看该作者 6楼 发表于: 2010-01-21
关注,
离线dbzhang800

只看该作者 7楼 发表于: 2010-01-22
引用第4楼lljzhgxd于2010-01-21 08:56发表的  :
但是不能用滚动条做吧


不妨考虑QGraphicsView的成员函数
void QAbstractScrollArea::setViewportMargins ( int left, int top, int right, int bottom )   [protected]

可参考 demo 中的例子
http://doc.trolltech.com/4.6/widgets-codeeditor.html
快速回复
限100 字节
 
上一个 下一个