我刚刚开始学习 Qml。Altought 我读了太多的 qt 教程,仍然在为一些问题苦苦挣扎。我想使用 OpenGL 制作多页桌面应用程序。首先,在程序的主要功能中,我正在传输类实例,以便我可以使用下面的代码片段在 qml 中访问它们。
QQmlApplicationEngine engine;
Foo foo;
engine.rooContext()->setContextProperty(QStringLiteral("foo"),&foo);
但是如果我必须实例化我想在 qml 中使用的所有类,这意味着 main 函数中将有一百个实例。我认为必须有更合适的方法来做到这一点。
其次,如果我们使用 qmlRegisterType 注册对象并导入到 qml 文件中,我可以在活动 qml 更改后访问 bar 类的属性吗?因为据我所知,bar 类的对象是在加载相应的 qml 时创建的。
项目.cpp
int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
qmlRegisterType<bar>("MyLib", 1, 0, "Comp");
qmlRegisterType<bar2>("MyLib2", 1, 0, "Comp2");
QQmlApplicationEngine engine;
Foo foo;
engine.rooContext()->setContextProperty(QStringLiteral("foo"),&foo);
.
.
.
}
GLWindow.qml
import QtQuick 2.0
import MyLib 1.0
Comp
{
id:sample
}
GlWindow2.qml
import QtQuick 2.0
import MyLib2 1.0
Comp2
{
id:sample2
}
酒吧.h
class bar: public QObject
{
Q_OBJECT
public:
Product* product;
void initialize();//Initialize Gl
void render(); //paint product's context
}
bar2.h
class bar2: public QObject
{
Q_OBJECT
public:
Product* product2;
void initialize();//Initialize Gl
void render(); //paint product's context
}
我在 GlWindow.qml 上绘制了产品的内容,然后关闭了这个 qml 并显示了 GlWindow2.qml。我的问题从这里开始,如何将产品内容传输到product2?