在Qt Qml控件中,ApplicationWindow在运行时缺少本机外观的主题

In Qt Qml Controls, ApplicationWindow lacks the native-looking theme when run

本文关键字:本机 外观 运行时 Qml Qt 控件 ApplicationWindow      更新时间:2023-10-16

Qml Controls默认带有一个不错的本机主题。当我通过解释器将我的程序作为 qml 文件运行时,它看起来很棒,但是,一旦我将代码复制到 c++ 后端并构建它,它看起来完全没有主题并且非常平淡。此外,我没有启用任何类型的控件样式来取消本机外观主题。

我唯一改变的是,由于我的主 qml 文件中的根对象是一个应用程序窗口,我将主.cpp文件从加载 qmlviewer 更改为创建我自己的应用程序引擎。我在想这可能是问题所在,但我不确定。

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickWindow>
int main(int argc, char *argv[]) {
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl("src/qml/main.qml"));
    QObject *topLevel = engine.rootObjects().value(0);
    QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
    window->show();
    return app.exec();
}

文档

在这个例子中,我们使用的是QApplication,而不是QGuiApplication。虽然您可以改用 QGuiApplication,但这样做将消除依赖于平台的样式。这是因为它依赖于小部件模块来提供本机外观。

如果这对你没有帮助,我会非常惊讶。