动态加载 SwipeView 页面

Łukasz Przeniosło

我创建了以下 MWE (Qt 5.13.0):

import QtQuick 2.0
import QtQuick.Window 2.2
import QtQuick.Controls 2.3

ApplicationWindow
{
    property int itemsNo: 3;

    id: window
    visible: true

    width: 480
    height: 480

    SwipeView
    {
        anchors.fill: parent;
        id: theSwipeView;

        Loader
        {
            sourceComponent: theSingleComp;

            Component
            {
                id: theSingleComp;

                Page
                {
                    Text
                    {
                        text: "The single one";
                    }
                }
            }
        }

        Repeater
        {
            model: itemsNo;

            Loader
            {
                sourceComponent: theMultiComp;

                Component
                {
                    id: theMultiComp;

                    Page
                    {
                        Text
                        {
                            text: "The multi one " +
                                  (theSwipeView.currentIndex - 1);
                        }
                    }
                }
            }
        }
    }
}

在我的程序中,我有一个独特的组件 ( theSingleComp) 和他背后的多个组件 ( theMultiComp)。至于现在,我需要实现以下功能:

如果用于的模型theMultiComp只有 1 个项目,则仅显示该项目而不显示theSingleComp如果theMultiComp项目更多,请像现在一样显示。在我看来,如果我保持静态定义的项目,这不可能起作用。但另一方面,我不知道如何动态执行此操作,因为在某些情况下根本不应显示其中一个组件。我尝试了这样的方法:

sourceComponent: (itemsNo > 1) ? theSingleComp : null;

但随后仍会创建此空组件的页面。

格雷科

你的问题是,LoaderItemSwipeView它创建了一个页面,即使它不具有源组件。

要解决此问题,您可以使用Repeater模型 1(或 0 禁用它)。Repeater也是一个,Item但它在引擎盖下有一些特殊的代码可以被容器忽略。

import QtQuick 2.0
import QtQuick.Window 2.2
import QtQuick.Controls 2.3

ApplicationWindow
{
    id: window
    property int itemsNo: 0

    visible: true

    width: 480
    height: 480

    SwipeView {
        id: theSwipeView
        anchors.fill: parent
        Repeater {
            model: window.itemsNo > 1 ? 1 : 0
            Page {
                Text {
                    text: "The single one"
                }
            }
        }
        Repeater {
            model: window.itemsNo
            Page {
                Text {
                    text: "The multi one " + model.index
                }
            }
        }
    }
}

(我已经简化了您的代码以删除显式组件和加载程序)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从对应 SwipeView 的页面标题填充 TabView

来自分类Dev

动态加载反应页面

来自分类Dev

如何动态加载外部页面

来自分类Dev

RSelenium:抓取加载缓慢的动态加载页面

来自分类Dev

访问动态加载的html页面的元素

来自分类Dev

动态加载页面的python web抓取

来自分类Dev

如何访问动态加载页面的元素

来自分类Dev

在div中加载动态php生成的页面

来自分类Dev

在 html 页面内加载动态内容

来自分类Dev

Oracle APEX 动态动作页面加载处理

来自分类Dev

页面加载后动态添加新的div

来自分类Dev

使用beautifulsoup抓取动态加载页面

来自分类Dev

如何将指令动态加载到页面中

来自分类Dev

动态填充下拉列表,无需重新加载页面

来自分类Dev

QTP如何等待页面加载动态数据?

来自分类Dev

MVC 4在单个页面上动态加载部分视图

来自分类Dev

使用Selenium WebDriver Java单击动态加载页面的元素

来自分类Dev

更改页面加载后动态添加的元素的onclick处理程序

来自分类Dev

动态内容不显示在页面重新加载上

来自分类Dev

动态加载页面时,Django url标记不起作用

来自分类Dev

页面动态加载内容时如何运行javascript函数

来自分类Dev

MVC 4在单个页面上动态加载部分视图

来自分类Dev

在jQueryMobile动态加载的不同页面上绑定Knockoutjs视图模型

来自分类Dev

动态渲染模板而无需重新加载页面

来自分类Dev

使用jQuery动态加载内容后,避免页面刷新

来自分类Dev

使用特定的servlet在pageload上加载动态.jsp页面

来自分类Dev

在php页面加载后使用Ajax动态呈现表值

来自分类Dev

使用ui.router来动态加载页面

来自分类Dev

将数据库数据加载为动态页面

Related 相关文章

热门标签

归档