|
本帖最后由 ltcxjtu 于 2016-3-1 21:32 编辑
- case Qt::Key_Up :
- //rotate(90);
- {
- qDebug()<<"hello:"<<"Key_Up"<<endl;
- QTransform transform;
- //transform.rotate(90);
-
- qreal x = boundingRect().center().x();
- qreal y = boundingRect().center().y();
- transform.translate(x,y).rotate(90).translate(-x,-y);
- this->setTransform(transform);
-
- /* setTransform(QTransform()
- .translate(boundingRect().width() / 2,
- boundingRect().height() /2)
- .rotate(90)
- .translate(-boundingRect().width() / 2,
- -boundingRect().height() / 2));*/
- //setRotation(90);
- if(isColliding())
- {
- // rotate(-90);
- // setRotation(-90);
- transform.rotate(-180);//we had a change here.
- this->setTransform(transform);
- }
- break;
- }
复制代码- //myitem.h
- #ifndef MYITEM_H
- #define MYITEM_H
- #include <QGraphicsItem>
- class MyItem : public QGraphicsItem
- {
- public:
- MyItem();
- void keyPressEvent(QKeyEvent *event);
- // void mousePressEvent(QGraphicsSceneMouseEvent *event);
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
- QRectF boundingRect() const;
- //void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
- private:
- QRectF rect;
- QPointF startPoint;
- QPointF offset;
- };
- #endif // MYITEM_H
- //myitem.cpp
- #include "myitem.h"
- #include<QPainter>
- #include<QGraphicsSceneEvent>
- #include<QKeyEvent>
- #include<QDebug>
- MyItem::MyItem()
- {
- setFlags(ItemIsFocusable|ItemIsMovable);
- //boundingRect();
- //rect.setRect(-18,-18,36,36);
- }
- QRectF MyItem::boundingRect() const
- {
- //rect.setRect(-18,-18,36,36);
- return QRectF(-18,-18,36,36);//QRectF(rect);
- }
- void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
- {
- rect.setRect(-18,-18,36,36);
- painter->drawRect(rect);
- }
- void MyItem::keyPressEvent(QKeyEvent *event)
- {
- switch (event->key())
- {
- case Qt::Key_4 :
- //rotate(-30);
- qDebug()<<"hehe"<<endl;
- [color=Red] [b] setRotation(-30); 重点代码[/b][/color]
- break;
- case Qt::Key_6 :
- //rotate(30);
- break;
- case Qt::Key_Up:
- //scale(1.2,1.2);
- qDebug()<<"haha"<<endl;
- [color=Red] [b] setScale(1.2); 重点代码[/b][/color]
- break;
- case Qt::Key_Down:
- // scale(1/1.2,1/1.2);
- [color=Red] [b] moveBy(-20,-20); 重点代码[/b][/color]
- break;
- case Qt::Key_Right:
- moveBy(20,20);
- }
- }
- //main.cpp
- #include<QApplication>
- #include"myitem.h"
- #include<QGraphicsScene>
- #include<QGraphicsView>
- int main(int argc,char *argv[])
- {
- QApplication app(argc,argv);
- QGraphicsScene scene;
- scene.setSceneRect(-200, -150, 400, 300);
- MyItem *item = new MyItem;
- item->setFocus();
- scene.addItem(item);
- item->setPos(50,50);
- QGraphicsView view;
- view.setScene(&scene);
- view.show();
- return app.exec();
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|