在Qt Qml控件中,ApplicationWindow在运行时缺少原生主题

use*_*117 6 c++ qt qml qt5

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

我唯一改变的是因为我的主qml文件中的根对象是ApplicationWindow,我将main.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();
}
Run Code Online (Sandbox Code Playgroud)

Kak*_*adu 10

文档

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

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