将QML应用程序与C+集成+;应用 P>有什么方法可以将QML应用程序与C++ ++?

将QML应用程序与C+集成+;应用 P>有什么方法可以将QML应用程序与C++ ++?,c++,qt,qml,qt5,c++17,C++,Qt,Qml,Qt5,C++17,我有什么? 我有一个用C++和ui文件制作的应用程序,这应该是主应用程序,还有一个应用程序,其中只有一些屏幕和视图在QML中制作 问题 有没有办法让我在QML中找到这些页面,并在C++应用程序中访问它们?我问这个问题的原因是因为我已经看到,实际上,它是完全不同的 C++main: QApplication a(argc, argv); MainWindow w(&a); w.show(); return a.exec(); QCoreApplication::setAttribute

我有什么?

我有一个用C++ui文件制作的应用程序,这应该是主应用程序,还有一个应用程序,其中只有一些屏幕和视图在QML中制作


问题

有没有办法让我在QML中找到这些页面,并在C++应用程序中访问它们?我问这个问题的原因是因为我已经看到,实际上,它是完全不同的

C++main:

QApplication a(argc, argv);
MainWindow w(&a);
w.show();
return a.exec();
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

QGuiApplication app(argc, argv);

qmlRegisterType<MovieListModel>("MovieListModel", 1, 0, "MovieListModel");
qmlRegisterType<MovieModel>("MovieModel", 1, 0, "MovieModel");


QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));

QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
    QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);

return app.exec();
QML main:

QApplication a(argc, argv);
MainWindow w(&a);
w.show();
return a.exec();
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

QGuiApplication app(argc, argv);

qmlRegisterType<MovieListModel>("MovieListModel", 1, 0, "MovieListModel");
qmlRegisterType<MovieModel>("MovieModel", 1, 0, "MovieModel");


QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));

QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
    QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);

return app.exec();
QCoreApplication::setAttribute(Qt::AA_enableHighdDiscaling);
QGUI应用程序应用程序(argc、argv);
qmlRegisterType(“MovieListModel”,1,0,“MovieListModel”);
qmlRegisterType(“电影模型”,1,0,“电影模型”);
qqmlaplicationengine;
const-QUrl-url(QStringLiteral(“qrc:/main.qml”);
QObject::connect(&engine,&QQmlApplicationEngine::objectCreated,&app,[url](QObject*obj,常量QUrl&objUrl){
如果(!obj&&url==objUrl)
QCoreApplication::退出(-1);
},Qt::QueuedConnection);
引擎加载(url);
返回app.exec();

问题

我如何组合这两个应用程序,或者,如果在我的应用程序中,我将单击一个按钮从UI文件(或直接从C++代码生成)进入一个页面,并且如果我将单击另一个按钮进入QML页面,那么我甚至可以组合这两个应用程序


如果你们中有人知道我该怎么做,请告诉我,因为我在谷歌上能找到的所有东西都是如何使用QML文件作为用户界面,以及如何使用一些C++作为特定用户界面的后端。但是,关于如何在UI方面将两者结合起来,我一无所知。

过了一会儿,我自己找到了答案

有一个专门的QQuickWidget,专门用于此目的

QQuickWidget *view = new QQuickWidget;
view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
view->show();

如果你想知道为什么你会被否决:你基本上是在问是否有可能做一些你认为可以做的事情。你可以在C++中注册一个模型,它是QML注册的,它使C++应用程序中发生了事情,它取决于你如何实现它,如果是正确答案,那么天空就是Limisti,然后标记为“接受”: