Chinaunix首页 | 论坛 | 博客
  • 博客访问: 110778
  • 博文数量: 24
  • 博客积分: 1475
  • 博客等级: 上尉
  • 技术积分: 291
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-04 14:14
个人简介

交互设计在未来很有前途,不要再说是做界面的了。

文章分类

全部博文(24)

文章存档

2013年(2)

2012年(2)

2010年(4)

2009年(2)

2007年(11)

2006年(3)

我的朋友

分类: C/C++

2010-05-05 11:21:26

  最近在用qt4写程序的时候,遇到一个问题,就是选择QGraphicsItem时无法显示选中边框。一开始以为是QGraphicsItem的一个属性,找了半天没找到。google之,发现了一篇文章介绍这个问题的解决方法:
看了半天,也没想到怎么能比较好的整合到我的程序中。于是暂时放弃,再研究qt4的例子。在diagramscene例子中,也实现了上述功能,经研究发现,是QGraphicsPolygonItem类自带的功能,那么它的实现是不是能简单点呢?
    打开qgraphicsitem.cpp,找到QGraphicsPathItem::paint函数,发现在绘制之后,加了   
if (option->state & QStyle::State_Selected)
    qt_graphicsItem_highlightSelected(this, painter, option);
再找到qt_graphicsItem_highlightSelected函数的实现,发现就是我们想要的,而且该函数相对独立,可以直接复制到我们想要的地方。(从qt提供的注释看,这个函数也是从别的地方复制过来的)
    把该函数加入我的程序后,测试好用。代码简单、可靠、可控,实现了我想要的功能。
    多快好省的实现共产主义是不可以的,但换个思路,多快好省的实现我们程序功能还是可以的,关键是要多看,多想,多比较。
ps:在qt4编程中,如果要拖动一幅基于view/scene/item的图形,不是通过view的translate来实现,而是通过iew的setDragMode(ScrollHandDrag)函数来实现,这个问题也为上述观点提供了一个很好的注脚。
 
阅读(1509) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~