




#include <QApplication>
#include <QQuickWidget>
#include <QVBoxLayout>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget mainWidget;
QVBoxLayout *layout = new QVBoxLayout(&mainWidget);
QQuickWidget *quickWidget = new QQuickWidget(&mainWidget);
quickWidget->setSource(QUrl::fromLocalFile("main.qml"));
quickWidget->rootContext()->setContextProperty("applicationDirPath", QApplication::applicationDirPath());
layout->addWidget(quickWidget);
mainWidget.setLayout(layout);
mainWidget.show();
return a.exec();
}

#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
综上所述,两种方式各有优缺点,选择哪种方式取决于具体的应用场景和需求。如果需要在现有的 Qt Widgets 应用程序中嵌入 QML 界面,建议使用 QQuickWidget;如果要创建全新的 QML 应用程序,使用 QQmlApplicationEngine 更为合适。

1万+

被折叠的 条评论
为什么被折叠?



