Qt,如何让一个QGraphicsItem图形项动起来

首先,这个图形项要继承于QGraphicsObject。

然后创建一个动作数组

QParallelAnimationGroup * animation = new QParallelAnimationGroup;

然后创建一个动作,拿旋转举个例子吧

QPropertyAnimation * rotate = new QPropertyAnimation(qgraphicsItem, "rotation");
rotate->setStartValue(200);  //创建动作的起始位置;参数是角度
rotate->setEndValue(180);

然后将动作添加到动作数组中
animation->addAnimation(rotate); animation->setLoopCount(-1)//设置动作几次,1为一次后停止,0不动,-1为无限循环 animation->start();//动作开始

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过重写 QGraphicsItem::mousePressEvent() 和 QGraphicsItem::paint() 函数来实现选中图形项并改变颜色的功能。具体实现可以参考以下代码: // 自定义图形项类 class MyGraphicsItem : public QGraphicsItem { public: MyGraphicsItem(QGraphicsItem *parent = nullptr) : QGraphicsItem(parent) {} QRectF boundingRect() const override { return QRectF(-20, -20, 40, 40); } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override { Q_UNUSED(option); Q_UNUSED(widget); // 绘制矩形 painter->setBrush(m_color); painter->drawRect(boundingRect()); } protected: void mousePressEvent(QGraphicsSceneMouseEvent *event) override { // 点击时改变颜色 m_color = Qt::red; update(); QGraphicsItem::mousePressEvent(event); } private: QColor m_color = Qt::blue; }; // 自定义场景类 class MyGraphicsScene : public QGraphicsScene { public: MyGraphicsScene(QObject *parent = nullptr) : QGraphicsScene(parent) { // 添加图形项 addItem(new MyGraphicsItem); } }; // 自定义视图类 class MyGraphicsView : public QGraphicsView { public: MyGraphicsView(QWidget *parent = nullptr) : QGraphicsView(parent) { // 设置场景 setScene(new MyGraphicsScene); } }; // 在主函数中创建视图并显示 int main(int argc, char *argv[]) { QApplication a(argc, argv); MyGraphicsView view; view.show(); return a.exec(); } 当点击图形项时,会触发 mousePressEvent() 函数,将颜色改为红色并调用 update() 函数刷新界面,从而实现改变颜色的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值