Qt下qml与QGraphics混合编程

cs10239dn 2017-03-14 10:16:17
试图将qml加载到QGraphicsScene中。

使用如下代码:
QQmlEngine * engine = new QQmlEngine();
QQmlComponent * component = new QQmlComponent(engine,QUrl(QStringLiteral("qrc:/glowLetter.qml")));
QObject* sss = component->create();
QGraphicsObject *object = qobject_cast<QGraphicsObject *>(sss);
scene()->addItem(object);
无法显示,添加object->setPos(100,100);崩溃

问题:
QGraphicsObject *object = qobject_cast<QGraphicsObject *>(sss);
sss的值正常
object 的值为 0

求解:如何将qml对象加到QGraphicsScene中。
(网上的资料大多使用老版的QML,转换的没错的话,即是如上的方式)

环境 qt 5.7.1 , Qtcreator , c++
附:qml文档:

Rectangle{
id:roo
width: 100
height: 100
color: "#f11010"
gradient: Gradient {
GradientStop {
position: 0.30;
color: "#f11010";
}
GradientStop {
position: 0.80;
color: "#ffffff";
}
}
border.color: "#2c3618"
}
...全文
929 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cs10239dn 2017-03-14
  • 打赏
  • 举报
回复
还有没有其他办法,求大神们给个方法。
cs10239dn 2017-03-14
  • 打赏
  • 举报
回复
仔细google了一下,大概说法如下: QtQUICK 2.0 与 1.0 有很大不同,QtQUICK 2.0 中 QQmlComponent .create后得到的qobject 不再可以转换为QGraphicsObject, qobject_cast<QGraphicsObject *>后结果为空。 google 上推荐使用QQuickView 实现,套上qwidget,再显示在界面上。

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧