我正在尝试用QT5.15.2为Android和Windows创建一个跨平台应用程序。对于Windows,我使用的是MinGW 64位编译器。
我想在这个应用的安卓版本中加入一个WebView QML组件。但是我知道MinGW与QtWebView不兼容,所以我也想为Windows提供一个备用组件。对于我来说,两个平台只有一个QML文件是很重要的。
为此,我尝试动态实例化WebView或回退标签,具体取决于运行时检测到的操作系统:
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3
Column {
property var createdObject
Component.onCompleted: {
if(Qt.platform.os=="android") {
createdObject=Qt.createQmlObject(
"import QtWebView 1.1
WebView {}
",
embedContainer
);
}
else { //on Windows
createdObject=Qt.createQmlObject(
"import QtQuick.Controls 1.4
Label {}
",
embedContainer
);
}
}
Item {
id: embedContainer
}
}这在Windows上运行得很好。但是,在Android上,组件无法创建,出现以下错误:
错误: Qt.createQmlObject():创建对象失败:
qrc:/内联:1:18:模块"QtWebView“未安装
因此,我尝试添加“导入QtWebView 1.1”作为代码片段的第三行。然后,它在Android上工作,但当然,Windows会抱怨“模块QtWebView没有安装”,并且无法显示标签。
我应该如何修改我的代码,使其在两个平台上按预期工作?非常感谢你的帮助。
发布于 2021-08-22 03:54:10
如果使用webview构建项目,则需要在.pro文件中添加qmake模块。
QT += webview由于您正在为Android和Windows构建相同的项目,而且WebView模块在Windows中不可用,您需要将其放在一个测试块中,如下所示:
!win32 {
QT += webview
}这意味着,如果目标平台不是Windows,则添加webview模块。
https://stackoverflow.com/questions/68873704
复制相似问题