• 33536阅读
  • 35回复

如何更改QGraphicsItem的尺寸 [复制链接]

上一主题 下一主题
离线sbtree
 
只看楼主 倒序阅读 楼主  发表于: 2008-10-21
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
正在做一个绘图的软件,想实现通过鼠标拉动来改变一个物件的大小,该物件想从QGraphicsItem类继承,不知道如何操作可以让物件被选中时在边缘出现更改大小的焦点,我的意思是这个类本身是不是有这样的功能,或者要怎样设置才能实现?当然这个问题也可以自己编写更多的代码通过重画该物件来实现,但是这样做工作量就会加大很多,想问问qt中有没有简洁的方法实现它?如图
windows 7 + VC++2008 + Qt4.5.2
离线water_wf

只看该作者 1楼 发表于: 2008-10-22
做过类似的东西,应该没有,只能通过不同的的child类型来自己画,可以看看boundingRect()
离线chaoscxm
只看该作者 2楼 发表于: 2008-10-22
试试看这个函数
setFlag(GraphicsItemFlag flag)
帖子签名(将在每个帖子下方显示)
离线sbtree
只看该作者 3楼 发表于: 2008-10-22
引用第1楼water_wf于2008-10-22 08:19发表的  :
做过类似的东西,应该没有,只能通过不同的的child类型来自己画,可以看看boundingRect()

water_wf,能不能提供点代码啊,急用,多谢了
windows 7 + VC++2008 + Qt4.5.2
离线water_wf

只看该作者 4楼 发表于: 2008-10-22
这个怎么提供啊,我们的是商业软件,对每一个QGraphicItem 的选中状态操作即可,而且我们作的也很简单,比如rect ,四个角上出现拖拉的框 就行了,鼠标经过的时候改变状态,提示用户可以操作即可
离线duduqq

只看该作者 5楼 发表于: 2008-10-23
楼上的你们做的软件叫什么名啊,用在那些行业的
离线water_wf

只看该作者 6楼 发表于: 2008-10-23
芯片行业
离线sbtree
只看该作者 7楼 发表于: 2008-10-28
多谢water_wf的样码,这里也把自己写的一个小例子拿来共享大家。
使用这个例子中的EOject类,在一个QGraphicsScene中添加一个EObject即可看到效果


源代码文件 test.zip (4 K) 下载次数:715
2条评分好评度+1贡献值+1
cliiiiii 好评度 +1 - 2019-08-13
cliiiiii 贡献值 +1 - 2019-08-13
windows 7 + VC++2008 + Qt4.5.2
离线loadingspace
只看该作者 8楼 发表于: 2009-02-15
感谢分享
离线2009
只看该作者 9楼 发表于: 2009-04-07
太感算了,我正需要
离线zsyf
只看该作者 10楼 发表于: 2009-04-21
收藏,正准备自己写呢,呵呵,有现成的就省事啦!!!哈哈哈!!!!
离线tears1134

只看该作者 11楼 发表于: 2009-10-20
楼主人太好了!
明天会更好!
离线dashanda
只看该作者 12楼 发表于: 2009-10-23
谢谢分享
离线longwenbiao
只看该作者 13楼 发表于: 2009-11-26
楼主,后来你是怎么解决的?能和我交流下不?
离线longwenbiao
只看该作者 14楼 发表于: 2009-11-26
善良的主,能把每个函数注释下不?我刚学Qt,有点难懂,呵呵
离线longwenbiao
只看该作者 15楼 发表于: 2009-11-30
楼主,在请教个问题:比如说我要动态的修改EObject中的填充颜色,该怎么办呢?
这里面无法定义qt的定时器
离线babybluema

只看该作者 16楼 发表于: 2010-01-11
不错,正需要,感谢分享。
离线wyzsoftware
只看该作者 17楼 发表于: 2010-03-15
万分感谢,QT已经实现选中、拖动等功能,却没实现item缩放功能,真是不理解....
离线xiaofeio

只看该作者 18楼 发表于: 2010-07-07
非常感谢
离线mytwp

只看该作者 19楼 发表于: 2010-07-09
我觉的在重写 paint函数,就可以吧。画几个框就好了吗
离线davis45
只看该作者 20楼 发表于: 2010-07-12
为什么不试试在boundingRect中画图元,然后更改boundingRect的大小,并使用adjust()函数来根据周围手柄调节外矩形框大小
谢谢大家的指教
离线0354030w

只看该作者 21楼 发表于: 2010-07-12
感谢楼主分享!
离线weihua1984

只看该作者 22楼 发表于: 2010-12-30
楼主的功能实现啦,但是在改变大小的时候,由小向大时没有没有,由大向小时,原来残留的部分还是存在,没有删除啊
是不是要重新刷新场景?
离线qinpanke

只看该作者 23楼 发表于: 2011-01-10
嗯,很不错,不错
[ 此帖被qinpanke在2011-01-10 11:41重新编辑 ]
QQ      308367961
email  qinpanke@sina.com
Blog    http://hi.baidu.com/qinpanke/blog/category/Qt
欢迎大家访问我的博客  共同学习提高
离线sbtree
只看该作者 24楼 发表于: 2011-01-10
引用第22楼weihua1984于2010-12-30 11:00发表的  :
楼主的功能实现啦,但是在改变大小的时候,由小向大时没有没有,由大向小时,原来残留的部分还是存在,没有删除啊
是不是要重新刷新场景?

这个还不是很完善,有时间的时候再做一个新的版本
windows 7 + VC++2008 + Qt4.5.2
离线weiehome
只看该作者 25楼 发表于: 2011-02-08
为什么不用 setscale 那个改变item的尺寸很简单阿
离线sbtree
只看该作者 26楼 发表于: 2011-02-10
引用第25楼weiehome于2011-02-08 02:07发表的  :
为什么不用 setscale 那个改变item的尺寸很简单阿

原则上可以这么用。但是这样做会有两个难以处理的问题:
1。不同item之间的坐标转换,尽管Item提供了很多转换函数,但是会在每次重绘时增加CPU的开销
2。影响放大后的细节重绘,某些时候要求Item在不同的缩放比例下显示不同的细节(见例子40000 Chips),如果对Item设置scale,将难以处理用户界面上的表达一致性。

另外一点,即使使用setScale函数,一样要计算xy的比例系数,还不如重新设置boundingRect来得直接
windows 7 + VC++2008 + Qt4.5.2
离线lyjbbq

只看该作者 27楼 发表于: 2011-07-10
那请问如何动态创建rect,我只能由topleft往右下setRect,但是其他方向就....
离线shaofubaihu
只看该作者 28楼 发表于: 2011-07-11
感谢分享
离线mistress
只看该作者 29楼 发表于: 2011-08-24
讨论的很细致哦,感谢楼主了~!
离线5373119

只看该作者 30楼 发表于: 2011-12-23
非常感谢  
离线5373119

只看该作者 31楼 发表于: 2011-12-23
离线鹰击长空

只看该作者 32楼 发表于: 2012-09-11
感谢
离线lsyzsl

只看该作者 33楼 发表于: 2016-09-10
怎么判断这个边框是放大还是缩小?鼠标拖动那8个红点可以实现四角等比缩放四边不等比缩放。
离线phoenix_pb

只看该作者 34楼 发表于: 2016-10-13
请问楼主的这个类图形是在一个Item中绘制还是多个Item绘制的组合?最近也在做一个同样的东西,这块没想明白,谢谢
我的征途是星辰大海!
离线chaif928

只看该作者 35楼 发表于: 2020-03-20
感谢分享
快速回复
限100 字节
 
上一个 下一个