在 QML 代码中获取 Qt 版本的全局函数或宏

use*_*291 4 c++ qt qml

如何5.11.2在我的 QML 代码中获得 Qt 版本,例如或类似版本。在我的 C++ 代码中,我有这些选项:

C++ 上可用的方法:

qVersion();
Run Code Online (Sandbox Code Playgroud)

C++ 上可用的宏:

QT_VERSION
Run Code Online (Sandbox Code Playgroud)

但是我在 QML 上找不到任何东西?

p-a*_*l-o 5

您可以使用上下文属性,如解释here

一个简单的例子,给定一个简单的 qml 文件,如下所示:

import QtQuick 2.9
import QtQuick.Window 2.2

Window {

    Text {
        text: qtversion
    }

    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
}
Run Code Online (Sandbox Code Playgroud)

qtversion在启动时设置属性,在main函数中:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.rootContext()->setContextProperty("qtversion", QString(qVersion()));
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;    

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)