1

我试图了解 Qt 背后的潜在魔力。似乎我错过了 QML 和 C++ 如何交互的重要概念。

在下面的“Hello World”演示中,最基本的,一个应用程序被声明,一个引擎被声明,然后一个应用程序被执行。

在这个级别,我们没有告诉应用程序使用引擎。qt怎么知道?

int main(int argc, char *argv[])
{
  QGuiApplication app(argc, argv);

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

  return app.exec();
}
4

1 回答 1

2

没有魔法,它确实发生了。在 Qt 源代码中有以下内容QQmlApplicationEnginePrivate.cpp

QCoreApplication::instance()->setProperty(
 "__qml_using_qqmlapplicationengine", QVariant(true));

这也回答了他们如何知道引擎应该使用该应用程序的问题。

QQmlApplicationEngine只取单个instance()ofQCoreApplication或其后代QGuiApplication并使用它。

于 2016-10-05T05:18:33.583 回答