繁体   English   中英

Qml 内容未出现在 Windows 下

[英]Qml contents doesn't appear under Windows

对于由 QtCreator 生成的新 QML 项目,QML 内容不会出现在 Windows 下。

这是我所做的:

  • 我已经使用 QtCreator => New project... => Application (Qt Quick) => Qt Quick Application - Scroll => 使用 CMake 作为构建系统生成了一个项目
  • 使用 QtCreator,我在 Release 构建配置中构建了应用程序。
  • 我已将构建的 *.exe 移动到一个新创建的空文件夹中。
  • 我调用了 C:/Qt/5.12.2/msvc2017_64/bin/windeployqt.exe QtCreatorScrollProject.exe --release --qmldir=c:\Users<myUserName>\Documents\QtCreatorScrollProject 来部署 ZE8801102A40AD859DDFCFDCAEBF008 旁边的项目依赖项。

当我在我的开发机器上运行这个构建时,它工作正常: 在此处输入图像描述

当我尝试在新的虚拟机上运行完全相同的应用程序时,出现 window,但 window 内部的 QML 内容不可见:== 不显示可滚动列表) 在此处输入图像描述

我猜这是一个部署问题,所以我尝试遵循本指南: https://wiki.qt.io/Deploy_an_Application_on_Windows 我按照以下步骤操作:“

将以下内容复制到 C:\Deployment

MyApp.exe 的发布版本

C:\Qt\5.2.1\mingw48_32\bin中的所有.dll文件

C:\Qt\5.2.1\mingw48_32\plugins 中的所有文件夹

(如果您使用 QML)C:\Qt\5.2.1\mingw48_32\qml 中的所有文件夹

"

我实际上必须自己翻译成这些步骤:“

将以下内容复制到 C:\Deployment

QtCreatorScrollProject.exe 的发布版本

C:\Qt\5.12.2\msvc2017_64\bin中的所有.dll文件

C:\Qt\5.12.2\msvc2017_64\plugins 中的所有文件夹

(如果您使用 QML) C:\Qt\5.12.2\msvc2017_64\qml 中的所有文件夹“

但即使完成此操作,该应用程序也不会显示 QML 内容。

所以我检查了这些额外的东西:更多信息:这是我使用QML_IMPORT_TRACE=1运行应用程序时的 output :

> 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

另外:“Windows Accessibility Insights”应用程序显示那里有些东西,只是不可见: 在此处输入图像描述

更多信息:

  • 该应用程序在 Windows7 VM 下运行良好(一切都出现了,包括 QML 内容)
  • 该应用程序在 Windows8 和 Windows10 虚拟机下不显示 QML 内容(空 window - QML 内容不出现)

这是 Windows7 VM 的上下文(如 OpenGL 扩展查看器所示),其中确实出现了 QML 内容: 在此处输入图像描述

这是 Windows10 VM 的上下文(如 OpenGL Extension Viewer 所示),其中 QML 内容未出现: 在此处输入图像描述

我尝试了很多方法来解决这个问题:从更新所有驱动程序到尝试强制使用不同的渲染器。 到目前为止没有任何效果。

由于缺少渲染 output,这可能是 OpenGL 的问题。 Qt 5 基于 OpenGL 和 Windows(和其他平台)越来越少地支持它。 它需要适当的 OpenGL 驱动程序和适当级别的 OpenGL 支持才能在本地工作。

这就是 Qt 可选择使用 ANGLE 的原因。 这是一个模拟层,将 Qt 中的 GL 调用转换为 DirectX 驱动程序调用 - 因此绕过了 OpenGL 驱动程序缺失或不足的问题。

如果这是问题,则在打包的应用程序中强制使用 ANGLE 应该可以解决它。

在 Qt 6 中,不再存在 ANGLE。 您可以在 main.cpp 开头的代码中强制 OpenGL:

#include <QQuickWindow>
...
#if defined(Q_OS_WIN)  
    QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);  
#endif  

有关详细信息,请参阅https://doc.qt.io/qt-6/windows-graphics.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM