QML пустое окно после компиляции

Собственно при попытке собрать приложение с qml интерфейсом получаю пустое окно. Пытался собирать встроенные примеры от qt, пробовал разные компиляторы (msvc2015 x64, mingw x64), разные версии qt (5.12, 5.14), результат всегда одинаков. Платформа win10 x64. На всякий случай минимально воспроизводимый пример:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

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

    QGuiApplication app(argc, argv);
   //  qmlRegisterType<BackEnd>("backend", 1, 0, "BackEnd");
    QQmlApplicationEngine engine;
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}
    import QtQuick 2.12
    import QtQuick.Window 2.12
    import QtQuick.Controls 2.12
    import QtQuick.Layouts 1.12

    Window {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")

        Rectangle
        {
            color : "red"
            width: 100
            height:100
        }

        TextField {
            text: "NEED HELP"
            placeholderText: qsTr("User name")
            anchors.centerIn: parent
        }
    }



Ответы (1 шт):

Автор решения: bronstein87

Проблема была в удаленном доступе. А именно в TeamViewer. Как оказывается, некоторые приложения отображаются в нем в виде пустого окна: ссылка на тред.

Суть заключается в том, что по умолчанию QML отрисовывается с помощью hardware OpenGL, т.е через видеокарту. В случае работы на удаленной машине, когда монитор отсутствует и отключен, видеокарта не отрисовывает необходимый контент. Решить эту проблему можно либо включив/подключив монитор, либо настроив драйвера видеокарты (подробнее по ссылке выше).

Временным решением может служить установка атрибута

QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);

Вместо:

QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);

При использовании софтварного opengl gui может откликаться значительно хуже, но это лучше чем видеть белое окно.

→ Ссылка