QGraphicsProxyWidget 动画不起作用
Posted
技术标签:
【中文标题】QGraphicsProxyWidget 动画不起作用【英文标题】:QGraphicsProxyWidget animations not working 【发布时间】:2015-01-08 10:51:36 【问题描述】:我正在尝试使用 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).
有什么建议吗?
【问题讨论】:
【参考方案1】:您的代码添加代理小部件并调用:-
proxy_widget->rotate(180);
如果您查看 QGraphicsProxyWidget 文档,您会发现它继承自 QGraphicsItem,并且您应该调用函数 setRotation
proxy_widget->setRotation(180);
【讨论】:
【参考方案2】:谢谢梅林。想通了这个问题。如果您从 QLabel 中删除育儿,它会起作用。
所以改变这个:
QLabel* label = new QLabel(this);
到这里:
QLabel* label = new QLabel();
【讨论】:
以上是关于QGraphicsProxyWidget 动画不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 QPlainTextEdit 绘制 QGraphicsProxyWidget 的工件
QGraphicsProxyWidget 搞乱了鼠标光标的变化
QGraphicsProxyWidget 在 QGraphicsScene 中剪切了上下文菜单
QT QGraphicsProxyWidget对象可选择或移动的一些tricks
Qt QGraphicsProxyWidget隐藏其他QGraphicsProxyWidgets
在 QGraphicsView/QGraphicsScene 中移动 QGraphicsProxyWidget 中的嵌入式小部件