标题:QGraphicsItem如何实现使用鼠标修改大小
作者:brillywu
日期:2013-07-15 17:18
内容:
原来是VC程序员的,越来越感觉QT的强大,在写一个简单的画图程序的时候,发现QT帮我们做了不少事情,就尝试使用QT来写这个程序。
QGraphicsView的框架,做画图程序是非常方便的,QT帮我们做了很多事情,但是没有找到如何实现当一个item被选中的时候,在其周围画6个小矩形来调整item的大小。是有其他方式来修改item的大小吗?还是得我们自己动手来着?
如何达到这个目标呢?就是可以通过鼠标方便的修改item的大小。
#1 [daily 07-16 09:39]
setscale
#2 [brillywu 07-16 18:41]
通过重载两个鼠标消息,判断坐标,然后处理。看起来可以。不知道这是不是实现的原理。代码如下:
#ifndef BMYGRAPHICSITEM_H
#define BMYGRAPHICSITEM_H
#include
#include
#include
template
class BMyGraphicsItem : public BaseItem
{
public:
BMyGraphicsItem(QGraphicsItem* p=0)
:BaseItem(p)
{
setAcceptHoverEvents(true); //必须有,否则无法接受mouseMove
setAcceptedMouseButtons(Qt::LeftButton);
setFlags( QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsSelectable );
}
void hoverMoveEvent ( QGraphicsSceneHoverEvent * event )
{
QPointF pos1 = event->pos();
QPointF pos = pos1;//this->mapFromScene(pos1);
QRectF rect = this->rect();
QRectF top=rect;
top.setTop( rect.top() - 2);
top.setBottom( rect.top() + 2);
QRectF bottom = rect;
bottom.setTop( rect.bottom() -2 );
bottom.setBottom(rect.bottom() +2 );
qDebug()
#3 [luna_kiki 07-24 11:48]
似乎没有实现预期功能