首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows的QML回退组件

Windows的QML回退组件
EN

Stack Overflow用户
提问于 2021-08-21 14:04:23
回答 1查看 291关注 0票数 0

我正在尝试用QT5.15.2为Android和Windows创建一个跨平台应用程序。对于Windows,我使用的是MinGW 64位编译器。

我想在这个应用的安卓版本中加入一个WebView QML组件。但是我知道MinGW与QtWebView不兼容,所以我也想为Windows提供一个备用组件。对于我来说,两个平台只有一个QML文件是很重要的。

为此,我尝试动态实例化WebView或回退标签,具体取决于运行时检测到的操作系统:

代码语言:javascript
复制
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没有安装”,并且无法显示标签。

我应该如何修改我的代码,使其在两个平台上按预期工作?非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-08-22 03:54:10

如果使用webview构建项目,则需要在.pro文件中添加qmake模块。

代码语言:javascript
复制
QT += webview

由于您正在为Android和Windows构建相同的项目,而且WebView模块在Windows中不可用,您需要将其放在一个测试块中,如下所示:

代码语言:javascript
复制
!win32 {
    QT += webview
}

这意味着,如果目标平台不是Windows,则添加webview模块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68873704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档