根据属性值有条件地包含组件

2023-11-25

我有一个 ListView,它显示来自 API 的一些数据。在我的列表项中,我需要有两个不同的组件树,具体取决于该行的数据。更具体地说,如果该行有关联的图像,我需要显示带有标签的图像,并以某种方式排列。如果它没有图像,那么我只想显示一个标签,以不同的方式排列。对我来说,这听起来像是我想创建两个不同的组件并动态选择要包含的组件。

目前它看起来像这样,以缩写形式:

ListItem.Empty {
    id: matchItem
    property string team1Name
    property string team2Name
    property string team1Logo
    property string team2Logo

    width: parent.width

    Item {
        id: team1Info
        width: parent.width*0.3

        anchors {
            left: parent.left
            top: parent.top
            bottom: parent.bottom
        }

        Item {
            anchors.fill: parent
            anchors.margins {
                top: units.gu(2)
                bottom: units.gu(2)
            }

            Image {
                id: team1LogoImage
                source: team1Logo
                width: parent.width
                height: units.gu(5)
                fillMode: Image.PreserveAspectFit
                anchors.horizontalAlignment: parent.horizontalCenter
            }

            Label {
                text: team1Name
                anchors.horizontalAlignment: Text.Center
            }
        }
    }

    // Some more elements and a repeat of the above for the second team
}

问题是如果team1Logo or team2Logo不是有效的 URL,例如如果团队没有徽标,则图像组件将失败。

我想做的基本上是:

if (team1Logo === "") {
    Label {
        // Stuff to make it look good without an image
    }
} else {
    Image {
        source: team1Logo
    }

    Label {
        // Stuff
    }
}

但据我所知,QML 并不是这样工作的。

我已经看了一下Loader组件,这看起来可能符合要求,因为我可以在设置时使用条件source加载器上的属性,但我无法让它工作。有谁知道如何实现我所描述的目标?


事实证明,实施起来相当简单Loader。例子:

Item {
    id: team1Info

    Loader {
        id: team1ItemLoader
        property string name: model.team1Name
        property string logo: model.team1Logo

        source: (logo) ? "TeamLogoItem.qml" : "TeamItem.qml"
    }
}

在这个例子中,name and logo然后在里面可用TeamLogoItem.qml or TeamItem.qml作为属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据属性值有条件地包含组件 的相关文章

  • 安全删除 StackView 转换中使用的 QML 组件

    Overview 我的问题涉及一个人的一生QObject由 制作QQmlComponent create http doc qt io qt 5 qqmlcomponent html create 1 返回的对象create 是一个实例化Q
  • 对于属性上的 NOTIFY 信号,如果我给它一个参数,会有什么区别?

    假设我有一个如下所示的类 class Something QObject Q PROPERTY int something READ getSomething NOTIFY somethingChanged signals void som
  • QML:原始模型中的动态视图重新排序

    使用此 Qt 教程通过拖动视图项来实现 QML 动态视图排序 QML 动态视图排序教程 https doc qt io qt 5 qml dynamicview tutorial html 原始底层模型是QAbstractListModel
  • 在 Windows 上部署 QML 应用程序的正确方法

    最近 我需要为我的 Qt QML 应用程序创建一个部署包 这个过程非常繁琐 因为您需要手动查找并复制依赖项 正如 官方 中所述Qt Wiki https wiki qt io Deploy an Application on Windows
  • 没有安装 qmlviewer

    我已经安装了 Qt SDK 5 0 0 beta 2 和 Qt Creator 2 6 0 它检测到该包 但给出警告 未安装 qmlviewer 我找了一下 在SDK的bin文件夹下 我能做些什么 我使用 ubuntu 12 04 并将 S
  • Qt3D动态纹理

    我正在开发包含 Qt3D 视图的软件 这个 3D 视图使我们能够可视化元素 对象的所有渲染部分都是使用自定义材质 着色器在 QML 中完成的 我能够创建一种将纹理传递到着色器以进行纹理化的材质 保存纹理的QML对象是Texture2D 它的
  • 如何在 QtQuick Controls 2 中将对话框置于屏幕中央?

    我的所有对话框都出现在屏幕的左上角而不是中心 让对话框自动正确放置的最佳方法是什么 import QtQuick 2 7 import QtQuick Controls 2 2 ApplicationWindow id mainWindow
  • 由 Javascript 填充的 QML ListView

    我刚刚意识到 根据一些 QML Bugreport ListView 缺少 JSON Delegate 所以我有两个选择 通过用Javascript或C 创建的模型来填充它 特别是我需要从预定义的 URL 下载 json 数据并将它们解析到
  • iOS 和 Android 中的照片库

    我正在开发一个用于移动设备运行的应用程序iOS and Android我在访问时遇到一些困难image gallery的设备与Qml 我需要在一个中列出图片库中的图像GridView 我尝试使用返回图片文件夹QStandardPaths但它
  • 自定义 QML 模块部署到 Android:缺少 QML 依赖项

    我正在开发一个包含一些特殊类型的自定义 QML 模块 我们称之为 MyModule 它用作其他应用程序项目的预编译库 即源代码对它们不可用 它通过 import MyModule 1 0 设置必要的导入路径等来使用 该模块包含基于 C 的
  • 如何使用 qt 在键盘上仅显示数字

    我在我的项目中使用 Qt Quick Virtual Keyboard 当我单击一个对象时 我想显示键盘但只显示数字 我怎样才能做到这一点 这就是我想做的 您可以使用Qt ImhFormattedNumbersOnly http doc q
  • QML 适合所有分辨率的屏幕

    大家好 我的 QML 代码有问题 我犯了一个错误 我给元素设置了一定的大小 现在我在将应用程序放在其他设备上时遇到了问题 我会将我的代码粘贴到有宽度和高度的位置 以便您可以更改它以向我展示如何使用动态调整大小 我需要说我正在使用以下代码从
  • 无法锚定到不是父级或同级 QML QtQuick 的项目

    我正在使用 QML 开发 python 桌面应用程序 我的 QML 文件中有这个 SplitView anchors fill parent orientation Qt Horizontal Rectangle color 272822
  • 如何管理返回到 QML 的动态分配的 QObject 的生命周期?

    我有这个代码 QVariant componentFromCode QString code QQmlComponent component new QQmlComponent engine engine gt setObjectOwner
  • 什么时候应该首选 Loader 而不是 createQmlObject,反之亦然 - QML?

    两者都可以动态创建对象 什么时候应该Loader优先于Qt createQmlObjectQML 中反之亦然吗 The Loader可以被视为特定对象的占位符 它还使您能够通过Loader s id Qt createQmlObject通常
  • 在 Qt Creator 中相互公开 QML 组件

    我正在使用 Qt Quick 和 PySide2 开发仪表板应用程序 但在 Qt Creator 的设计模式中公开我的 QML 组件时遇到问题 我的文件夹结构如下所示 myapp mycomponents component1 qml co
  • 如何访问Loader的sourceComponent中的QML对象?

    我可能需要读取或写入的一些属性Loader s sourceComponent来自一些外部函数 访问该房产的方式是什么x里面的对象的Loader s sourceComponent import QtQuick 2 0 Item width
  • 内容居中的流式布局

    我有一排项目 当窗口宽度变得太小而无法显示一行中的所有项目时 这些项目应该堆叠起来 如下图所示 The Flow组件堆叠项目 但它们不是居中而是在左侧或右侧对齐 Flow Item Item Item Item Item QML 中是否有内
  • 无法将 [未定义] 分配给 QColor

    我正在使用 Qt 5 11 构建 运行代码 代码中有QML风格如下 Button style delegate Component id enabledButtonStyle ButtonStyle padding top 0 paddin
  • MapItemView 在 dataChanged 信号后不会更新

    我正在使用 QMLMapItemView使用 C 的组件QAbstractListModel基于模型 这MapItemView当模型重置时 或者每当添加新项目或删除现有项目时 工作正常 但是 那MapItemView不反映对已添加项目的更改

随机推荐

  • R 标识符号更改之前的行

    我有一个向量 df lt c 5 9 8 7 1 如何识别标志变化之前的位置 IEdf 2 这很简单 如果你了解的话sign功能 which diff sign df 0 1 2
  • 使用以编程方式构造的公式有什么陷阱吗?

    我想要遍历一个潜在解释变量的长向量 依次对每个变量回归响应变量 而不是粘贴在一起 模型公式 我正在考虑使用reformulate 如此处所示 功能fun 下面似乎可以完成工作 拟合所需的模型 但请注意 它在其调用元素中记录name构造的公式
  • 获取 ASP.NET MVC3 Intranet 应用程序中登录的用户名

    我正在开发 MVC 3 Intranet 应用程序 Windows 身份验证 用户登录后 应用程序必须显示用户的个人资料页面 为此 必须将登录用户的用户名作为 Global asax cs 中以下路由中的路由参数传入 routes MapR
  • NodeJS 通过一个路由文件表达多个路由文件

    我正在学习 NodeJS 我有一个nodeJS API 项目 我想在路线中使用版本 因此我创建了以下文件夹结构 application app js routes V1 routes js users js 这是我的 app js 文件 v
  • SQL 多条件 CTE 递归

    在数据库中 每个标识符都有以下 2 条信息 控制他们的公司 以及他们拥有少量控制权的公司 大致意思是 2 个表 忽略一些唯一标识符 组织 orgid org immediate parent orgid 1 2 2 2 3 1 5 4 关系
  • C#程序导致蓝屏?

    这只是蓝屏显示的重要内容 我使用的是 Windows 7 x64 已检测到问题 Windows 已关闭以防止损坏 到您的计算机 PROCESS HAS LOCKED PAGES 停止 0x00000076 0x000000000000000
  • ng-init 是否像 ng-model 一样监视实例化属性的变化?

    ng init 是否像 ng model 一样监视实例化属性的变化 显然不是 所以我设置了一个手表 如下所示 app js var app angular module plunker app controller MainCtrl fun
  • Plinq、Cores 和 WithDegreeOfParallelism?

    据我了解 Plinq 决定打开多少个线程 每个线程位于不同核心的线程上 按核心数 Core 1 Core 2 Core 3 Core 4 因此 如果我有一个 Plinq 任务来查找所有前 1000 个素数 Plink将打开一个新的Threa
  • 使用 Android 的 AudioTrack 组合声音样本字节会产生噪音

    我正在构建一个相当简单的 Android 应用程序 sdk 修订版 14 ICS 它允许用户一次选择两个音频剪辑 均为 RIFF WAV 格式 小端 签名 PCM 16 位编码 并将它们组合在创造新声音的各种方式 我用于此组合的最基本方法如
  • 在 OpenCV C++ 中将图像的所有白色像素更改为透明

    我在 OpenCV 中有这张图片imgColorPanel imread newGUI png CV LOAD IMAGE COLOR 当我用灰度加载它时imgColorPanel imread newGUI png CV LOAD IMA
  • 智能分页算法[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找智能分页的示例算法 所谓聪明 我的意思是 我只想显示当前页面的 2 个相邻页面 因此我不会以长得可笑的页面列表结束 而是将其截断 这是一个简单的例子 可以让它更清楚 这就是
  • 如何在 Erlang 中读取整数?

    我正在尝试读取用户输入的整数 如 C 中的 cin gt gt nInput 我发现 io fread bif 来自http www erlang org doc man io html 所以我写这样的代码 ok X io fread 输入
  • 具有多个表的单个文本文件

    我正在尝试从具有多个表的单个文本文件导入数据 这些表的长度各不相同 但每个表之间有共同的间隔 每个表之间的分隔是一个数字后跟一个字符 例如 19 EOP 1 10 92 9144 202 1271 0 B 10 Dec 2014 11 46
  • 如何从 Win32 中的 func ptr 获取模块句柄?

    我正在研究虚拟机的本机调用绑定 其中一项功能是能够在运行时按名称查找标准 libc 函数 在 Windows 上 这变得有点麻烦 因为我需要获取进程中当前加载的 msvcrt 模块的句柄 通常这是 msvcrt dll 但也可能是其他变体
  • 为什么不可变对象受到 JVM GC 的喜爱?

    我知道JVM GC喜欢短寿命对象的原因 因为它可以在minor GC中收集 但为什么 JVM GC 喜欢不可变对象呢 编辑 Charlie Hunt 说 GC 喜欢他的不可变对象推介会 Thanks 如果 GC 可以知道某个对象不包含对任何
  • jQuery - 如何知道窗口是否正在调整宽度/高度或两者的大小?

    我在使用 jQuery 函数调整窗口大小时遇到 一些问题 resize 我想知道哪个尺寸变大 变小 宽度或高度 我需要这个 因为如果我只设置两个条件 如果宽度比 div 大 50px 如果高度比 div 大 50px pseudocode
  • 从 NSArray 获取单个属性的 NSArray

    我面临着一个非常常见的情况 我有一个 NSArray 它有一个自定义类型的对象 比如 Person Person 类具有以下属性 firstName lastName 和age 如何从具有 Person 对象的 NSArray 中获取仅包含
  • 具有可变 Excel 连接管理器的 SSIS

    我正在尝试使用 SSIS 中的 WMI 事件观察器任务自动执行包 我想要的功能是当 Excel 文件放入某个文件夹时自动执行包 但是 这些 excel 文件将是用于填充数据库的连接管理器 目前 SSIS 不允许我这样做 因为我的 Excel
  • Primefaces selectCheckboxMenu 过滤器在 selectOneMenu 位于数据表内部时不起作用

    我有一个 Primefaces 5 0 数据表 我使用两列过滤器 selectOneMenu Filter1 和 selectCheckboxMenu Filter2 两个过滤器的数据都填充得很好 selectOneMenu Filter1
  • 根据属性值有条件地包含组件

    我有一个 ListView 它显示来自 API 的一些数据 在我的列表项中 我需要有两个不同的组件树 具体取决于该行的数据 更具体地说 如果该行有关联的图像 我需要显示带有标签的图像 并以某种方式排列 如果它没有图像 那么我只想显示一个标签