QGraphicsProxyWidget动画无法正常工作

时间:2015-01-08 10:51:36

标签: c++ qt qgraphicsview qt4.7

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

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

然而,这似乎并没有做任何事情:

      QLabel* label =  new QLabel(this);
      label->setText("This is some sample text to\ntest if we can rotate the\nimage 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).

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

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

proxy_widget->rotate(180);

如果查看QGraphicsProxyWidget文档,您会看到它继承自QGraphicsItem并且您应该调用函数setRotation

proxy_widget->setRotation(180);

答案 1 :(得分:0)

谢谢Merlin。找出问题所在。如果你从QLabel中删除了父母,那就可以了。

所以改变这个:

QLabel* label =  new QLabel(this);

对此:

QLabel* label =  new QLabel();