0
votes

QML contents doesn't appear under Windows for a fresh QML project, that was generated by QtCreator.

Here is what I did :

  • I have generated a project using QtCreator => New project... => Application (Qt Quick) => Qt Quick Application - Scroll => using CMake as the build system
  • Using QtCreator I have built the app in Release build configuration.
  • I have moved the built *.exe to a freshly created, empty folder.
  • I called C:/Qt/5.12.2/msvc2017_64/bin/windeployqt.exe QtCreatorScrollProject.exe --release --qmldir=c:\Users<myUserName>\Documents\QtCreatorScrollProject to deploy the Qt dependencies next to the project.

When I run this build on my development machine, it works fine : enter image description here

When I try to run the exact same app on a fresh virtual machine, the window appears, but the QML contents inside of the window are not visible ( == the scrollable list doesn't appear ) : enter image description here

I guessed that it is a deployment issue, so I tried to follow this guide : https://wiki.qt.io/Deploy_an_Application_on_Windows . I followed these steps : "

Copy the following into C:\Deployment

The release version of MyApp.exe

All the .dll files from C:\Qt\5.2.1\mingw48_32\bin

All the folders from C:\Qt\5.2.1\mingw48_32\plugins

(If you used QML) All the folders from C:\Qt\5.2.1\mingw48_32\qml

"

which I actually had to translate to these steps for myself : "

Copy the following into C:\Deployment

The release version of QtCreatorScrollProject.exe

All the .dll files from C:\Qt\5.12.2\msvc2017_64\bin

All the folders from C:\Qt\5.12.2\msvc2017_64\plugins

(If you used QML) All the folders from C:\Qt\5.12.2\msvc2017_64\qml "

But even after having done this, the app doesn't show the QML contents.

So I checked these additional things : A bit more info : Here is the output of the app when I run it with QML_IMPORT_TRACE=1 :

> set QML_IMPORT_TRACE=1

> QtCreatorScrollProject.exe
warning: Environment variable QT_LOGGING_TO_CONSOLE is deprecated, use
QT_ASSUME_STDERR_HAS_CONSOLE and/or QT_FORCE_STDERR_LOGGING instead.
QQmlImportDatabase::addImportPath: "C:/Users/User/Downloads/6/6/qml"
QQmlImportDatabase::addImportPath: "qrc:/qt-project.org/imports"
QQmlImportDatabase::addImportPath: "C:/Users/User/Downloads/6/6"
QQmlImports(qrc:/main.qml)::addLibraryImport: "QtQuick" 2.12 as
""
QQmlImports(qrc:/main.qml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick" from
"C:/Users/User/Downloads/6/6/QtQuick.2"
QQmlImports(qrc:/main.qml)::addLibraryImport: "QtQuick.Controls" 2.5
as ""
QQmlImports(qrc:/main.qml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick/Controls.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick.Controls" from
"C:/Users/User/Downloads/6/6/QtQuick/Controls.2"
QQmlImports(qrc:/main.qml)::addLibraryImport: "QtQuick" 2.0 as
"QmlInternals"
QQmlImports(qrc:/main.qml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick.2/qmldir"
QQmlImports(qrc:/main.qml)::resolveType: "ScrollView" =>
"" QUrl("qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml") TYPE/URL
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::addLibraryImport:
"QtQuick" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::importExtension:
loaded "C:/Users/User/Downloads/6/6/QtQuick.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::addLibraryImport:
"QtQuick.Controls" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::importExtension:
loaded "C:/Users/User/Downloads/6/6/QtQuick/Controls.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::addLibraryImport:
"QtQuick.Controls.impl" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::addLibraryImport:
"QtQuick.Templates" 2.12 as "T"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::importExtension:
loaded "C:/Users/User/Downloads/6/6/QtQuick/Templates.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick.Templates" from
"C:/Users/User/Downloads/6/6/QtQuick/Templates.2"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::resolveType:
"ScrollBar" => "" QUrl("qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml") TYPE/URL
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::addLibraryImport:
"QtQuick" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::addLibraryImport:
"QtQuick.Controls" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick/Controls.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::addLibraryImport:
"QtQuick.Controls.impl" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::addLibraryImport:
"QtQuick.Templates" 2.12 as "T"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick/Templates.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::resolveType:
"Transition" => "QQuickTransition" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::resolveType:
"Rectangle" => "QQuickRectangle" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::resolveType:
"NumberAnimation" => "QQuickNumberAnimation" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::resolveType:
"T.ScrollBar" => "QQuickScrollBar" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::resolveType:
"SequentialAnimation" => "QQuickSequentialAnimation"
TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::resolveType:
"PauseAnimation" => "QQuickPauseAnimation" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::resolveType:
"State" => "QQuickState" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::resolveType:
"PropertyChanges" => "QQuickPropertyChanges" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml)::addImplicitImport
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::resolveType:
"T.ScrollView" => "QQuickScrollView" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::addImplicitImport
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::resolveType:
"ScrollBar" => "" QUrl("qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml") TYPE/URL
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollView.qml)::resolveType:
"ScrollBar" => "" QUrl("qrc:/qt-
project.org/imports/QtQuick/Controls.2/ScrollBar.qml") TYPE/URL
QQmlImports(qrc:/main.qml)::resolveType: "ListView" =>
"QQuickListView" TYPE
QQmlImports(qrc:/main.qml)::resolveType: "ApplicationWindow" =>
"" QUrl("qrc:/qt-
project.org/imports/QtQuick/Controls.2/ApplicationWindow.qml") TYPE/URL
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::addLibraryImport: "QtQuick" 2.12 as ""
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick.2/qmldir"
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::addLibraryImport: "QtQuick.Window" 2.12 as ""
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick/Window.2/qmldir"
QQmlImportDatabase::registerPluginTypes: "QtQuick.Window" from
"C:/Users/User/Downloads/6/6/QtQuick/Window.2"
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::addLibraryImport: "QtQuick.Controls" 2.12 as ""
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick/Controls.2/qmldir"
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::addLibraryImport: "QtQuick.Controls.impl" 2.12 as ""
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::addLibraryImport: "QtQuick.Templates" 2.12 as "T"
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::importExtension: loaded
"C:/Users/User/Downloads/6/6/QtQuick/Templates.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ApplicationWindow.qml)::resolveType:
"Rectangle" => "QQuickRectangle" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ApplicationWindow.qml)::resolveType:
"T.ApplicationWindow" => "QQuickApplicationWindow" TYPE
QQmlImports(qrc:/qt-project.org/imports/QtQuick/Controls.2/ApplicationWindow.q
ml)::addImplicitImport
QQmlImports(qrc:/main.qml)::resolveType: "ItemDelegate" =>
"" QUrl("qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml") TYPE/URL
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::addLibraryImport:
"QtQuick" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::importExtension:
loaded "C:/Users/User/Downloads/6/6/QtQuick.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::addLibraryImport:
"QtQuick.Controls" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::importExtension:
loaded "C:/Users/User/Downloads/6/6/QtQuick/Controls.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::addLibraryImport:
"QtQuick.Controls.impl" 2.12 as ""
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::addLibraryImport:
"QtQuick.Templates" 2.12 as "T"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::importExtension:
loaded "C:/Users/User/Downloads/6/6/QtQuick/Templates.2/qmldir"
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::resolveType:
"IconLabel" => "QQuickIconLabel" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::resolveType:
"T.ItemDelegate" => "QQuickItemDelegate" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::resolveType:
"Rectangle" => "QQuickRectangle" TYPE
QQmlImports(qrc:/qt-
project.org/imports/QtQuick/Controls.2/ItemDelegate.qml)::addImplicitImport
QQmlImports(qrc:/main.qml)::resolveType: "QmlInternals.Component"
=> "QQmlComponent" TYPE
QQmlImports(qrc:/main.qml)::addImplicitImport

Also : "Accessibility Insights for Windows" app shows that there is something there, it is just not visible : enter image description here

A bit more info :

  • the app works well under a Windows7 VM (everything appears, including QML contents)
  • the app doesn't show the QML contents under Windows8 and Windows10 VMs (empty window - QML contents doesn't appear)

Here is the context of the Windows7 VM (as shown by OpenGL Extension Viewer), where the QML contents does appear : enter image description here

Here is the context of the Windows10 VM (as shown by OpenGL Extension Viewer), where the QML contents doesn't appear : enter image description here

I tried a lot of approaches to fix this issue : from updating all the drivers, to trying to force to different renderers. Nothing worked so far.

1
You don't show the source code of the app. Are you calling out a specific font that isn't available in Windows 8 and 10? - David K. Hess
As I mentioned it is a freshly created (unmodified) project, generated by Qt Creator so it is easily reproducible by doing the same. Anyways : here is the source : github.com/szigetics/QtCreatorScrollProject . - thorax
Have you tried changing the theme in qtquickcontrols2.conf to something other than Default? - David K. Hess
Have you tried using windeployqt.exe instead of gathering dependencies by hand? More info: doc.qt.io/qt-5/… - David K. Hess
@DavidK.Hess : Could you please add the answer to this page so I could approve it as the correct solution? :) (The answer is that one must set the QT_OPENGL env. variable to angle . Or : compile Qt with configure ... -angle . Or : call QCoreApplication::setAttribute(Qt::AA_UseOpenGLES); before creating the QApplication object .) - thorax

1 Answers

0
votes

Based on the lack of rendering output, it is likely an issue with OpenGL. Qt 5 is based on OpenGL and Windows (and other platforms) have been supporting it less and less. It requires proper OpenGL drivers with a proper level of OpenGL support to work natively.

That's why Qt optionally uses ANGLE. This is an emulation layer that translates GL calls in Qt to DirectX driver calls - therefore bypassing the issue of missing or insufficient OpenGL drivers.

Forcing the use of ANGLE in your packaged app should fix it if that's the issue.