Qml 何时使用Qt Quick 2中的哪些类以及如何使用?
我正在尝试用Qt5.1和QtQuick2编写一个游戏,它是一个新的(更快的)图形引擎。我已经阅读了几个小时的文档,但是仍然无法确定如果我想在其位置由C++代码决定的屏幕上移动项目,我们将使用什么类。 在QGraphics中,这很简单:我创建了一个QGraphicscene实例,将QGraphicsSitem的任何继承者添加到该实例中,然后创建一个QGraphicsView实例,它是一个小部件,显示所有项目及其更改。我将QGraphicsItem连接到信号以进行更改 在Qt Quick 2中,我首先阅读了Qml 何时使用Qt Quick 2中的哪些类以及如何使用?,qml,qt5,qtquick2,Qml,Qt5,Qtquick2,我正在尝试用Qt5.1和QtQuick2编写一个游戏,它是一个新的(更快的)图形引擎。我已经阅读了几个小时的文档,但是仍然无法确定如果我想在其位置由C++代码决定的屏幕上移动项目,我们将使用什么类。 在QGraphics中,这很简单:我创建了一个QGraphicscene实例,将QGraphicsSitem的任何继承者添加到该实例中,然后创建一个QGraphicsView实例,它是一个小部件,显示所有项目及其更改。我将QGraphicsItem连接到信号以进行更改 在Qt Quick 2中,我首
- 只使用QML和Javascript
- 然后我想我找到了QGraphics的等价物,即QdeCrativeEngine,QdeCrativeComponent和QDelcarativeView并准备创建具有Q_属性的自定义QML元素
- 更新:刚才我发现QdeCrative*是Qt Quick 1,Qqqml*是等效的Qt Quick 2前缀。
- 但后来我也发现了。
-
有人能给我一个基于Qt Quaster 2的基本示例,在画布上的图像是由正在从C++中写入的正则QObjs发送的信号移动的?
- 你能帮我把我提到的所有课程分类吗。我什么时候用哪个
- 当您需要一个能够承载QtQuick 2内容的
时,您需要一个QWindow
或QQuickView
(通常前者提供了更多的便利;请参阅他们的文档)QQuickWindow
- QtQuick2不是基于
。它甚至不在QtWidgets中——您不能在那里使用任何与widgets相关的类或APIQGraphicsView
- 将QML元素属性绑定到C++对象之一的最简单方法是将该对象暴露到QML引擎,然后执行普通绑定。
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
}
<>你可以动态地从C++侧实例化自定义QML组件,并修改属性,仍然是C++侧的。
您也可以只使用一些C++列表/模型/多个QObjices,包含精灵/字符的位置/显示在屏幕上的任何东西,然后将该列表与QML侧绑定。
你也可以从C++写一些QQuickItem来布局它的孩子(如这里提议的):
-这里有一些链接完成了PEPE的答案/详细说明如何混合QtQuik+C++:
< > Qt Quase+/C++集成的文档页面(Qt5文档没有谷歌索引):QQuickView
不是QWidget
;您可以使用QWidget::createWindowContainer
来承载这样一个视图。