我正在尝试用Qt5.1和QtQuick2编写一个游戏,它是新的(更快)图形引擎。我已经阅读了几个小时的文档,但是如果我想要在屏幕上移动由C++代码决定的位置的项,我仍然不知道该使用什么类。
在QGraphics中,这很容易:我创建一个QGraphicsScene实例,向它添加QGraphicsItem的任何继承者,然后创建一个QGraphicsView实例,该实例是一个Widget,并显示所有项及其更改。我将QGraphicsItem连接到信号以进行更改。
在QtQuick2中,我首先阅读了
在阅读了许多教程文档之后,我仍然不知道“默认”解决方案是什么。每个教程都显示了一些不同的东西。我被所有的例子和课程迷住了。
发布于 2013-07-30 20:30:58
我认为你在不同的层次上混淆了事物,而这会使这个问题成为一个“复合”问题,应该在较小的问题中分裂.
总之:
QWindow 2内容的时,您需要一个QQuickView或QQuickWindow (通常前者提供了更多的方便;请参阅它们的文档)。例如:
class MyObject : public QObject {
Q_OBJECT
Q_PROPERTY(int horizontalPos READ horizontalPos NOTIFY horizontalPosChanged)
public:
int horizontalPos() const { return m_horizontalPos; }
signals:
void horizontalPosChanged();
// etc.
}然后,您可以向QML引擎公开MyObject的一个实例:
MyObject obj;
QQuickView view;
// exposes the object under the "_myObject" name
view.engine()->context()->setContextProperty("_myObject", &obj); 下划线是一个很好的方式来强调这个名字来自C++世界。
最后,在QML中,您可以绑定到属性:
Rectangle {
x: _myObject.horizontalPos // voilà, they're bound together
}https://stackoverflow.com/questions/17936624
复制相似问题