• 4950阅读
  • 1回复

QGraphiicsItem 坐标变换 [复制链接]

上一主题 下一主题
离线dream3938487
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-02
MyScene::MyScene(QObject *parent)
    : QGraphicsScene(parent)
{
    QGraphicsRectItem *rect1 = new QGraphicsRectItem(-20,-20,40,40);
    rect1->setFlags( QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
    rect1->setFlag(QGraphicsItem::ItemIsMovable,false);
    this->addItem(rect1);

}

void MyScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent){
    QList<QGraphicsItem *>    selectItems = this->items(mouseEvent->scenePos());
    QTransform t;
    if (mouseEvent->button()==Qt::LeftButton){
        if (!selectItems.isEmpty())
        {
            QGraphicsRectItem  *selectItem = dynamic_cast<QGraphicsRectItem *>(selectItems.at(0));
            if (selectItem)
            {    selectItem->setSelected(true);
                selectItem->setTransform(QTransform().scale(1,2),true);
            }
        }
    }
    else if (mouseEvent->button()==Qt::RightButton)
    {
        if (!selectItems.isEmpty())
        {
            QGraphicsRectItem  *selectItem = dynamic_cast<QGraphicsRectItem *>(selectItems.at(0));
            if (selectItem)
            {
                selectItem->setSelected(true);
                selectItem->setTransform(QTransform().rotate(90),true);
            }
        }
    }
    QGraphicsScene::mousePressEvent(mouseEvent);
    
}

(图一)开始时状态

(图二)左击后状态

(图三)再右击后状态

(图四)再左击后状态

(图五)再左南后状态

左击是将矩形x文向不变,y方向放大两倍
右击是将矩形旋转90度。
可是我想问:图二和图三为什么没有变化(矩形本身没有旋转,只是坐标系旋转了呢)

离线dream3938487
只看该作者 1楼 发表于: 2010-04-02
在线等,谢谢大家
快速回复
限100 字节
 
上一个 下一个