QGraphicsProxyWidget 動畫不工作

QGraphicsProxyWidget animations not working

本文关键字:工作 QGraphicsProxyWidget      更新时间:2023-10-16

我正在尝试使用QGraphicsProxyWidget执行一些动画,但没有看到任何正在应用。例如,如果我想只旋转QGraphicsTextItem,则此代码有效:

      QGraphicsView *view_ = new QGraphicsView(this);          
      QGraphicsScene *scene_ = new QGraphicsScene(view);
QGraphicsTextItem *text_item_ = new QGraphicsTextItem("This is some sample text tontest if we can rotate thenimage correctly");
      scene_->addItem(text_item_);
      text_item_->rotate(180);
      view->setScene(scene_);

但是,这实际上似乎没有任何作用:

      QLabel* label =  new QLabel(this);
      label->setText("This is some sample text tontest if we can rotate thenimage correctly");
      QGraphicsView *view_ = new QGraphicsView(this);          
      QGraphicsScene *scene_ = new QGraphicsScene(view);
QGraphicsProxyWidget *proxy_widget_ = new QGraphicsProxyWidget();
      proxy_widget_->setWidget(label);
      scene_->addItem(proxy_widget__);
      proxy_widget_->rotate(180);
      view->setScene(scene_);

这样做也不是:

QGraphicsProxyWidget *proxy_widget_ = scene_->addWidget(label).

有什么建议吗?

您的代码添加了代理小部件并调用: -

proxy_widget->rotate(180);

如果你看一下 QGraphicsProxyWidget 文档,你会发现它继承自 QGraphicsItem,你应该调用函数 setRotate

proxy_widget->setRotation(180);

谢谢梅林。想通了问题。如果您从 QLabel 中删除育儿,它可以工作。

所以改变这个:

QLabel* label =  new QLabel(this);

对此:

QLabel* label =  new QLabel();