【问题标题】:QML StackView, how to navigate within the pushed item?QML StackView,如何在推送的项目中导航?
【发布时间】:2017-11-08 13:24:32
【问题描述】:

我的应用有一个包含两个 QML 文件的 stackview。 而且我需要从一个 QML 文件导航到另一个 QML 文件内部,我将无法访问 stackview 来推送或弹出。 我应该如何设计这个?

Main.qml

Rectangle
{
   id: mainBkg
   color: "white"
   width: Screen.width
   height: Screen.height

    //Tickes every globalTimer.interval
    property int globalTick: 0


     Statusbar
     {
        width: Screen.width
        height: Screen.height*0.2
        id: statusBar
        Rectangle
        {
         width: parent.width
         height: parent.height*0.2
         anchors.fill: parent
         color: "green"

         Text {
            id: t
            text: qsTr("QMLfile1")

         }
       } 
     }//end of statusbar

    StackView {
        id: stackView
        anchors.top: statusBar.bottom
        anchors.centerIn: parent

        //What should be here? So that stackView
        //will be available inside the loaded items.   
        initialItem: 
    } 
}

以下是两个 QML 文件:

QMLfile1.qml

Rectangle
{
    width: parent.width
    height: parent.height*0.2

    anchors.fill: parent
    color: "green"


    Text {
        id: t
        text: qsTr("QMLfile1")

    }
    MouseArea:{
      onClicked: //move to other QML file in stackview
    }
}

我有另一个像上面那样的 QML 文件。

【问题讨论】:

  • 请分享一些代码来激发我的想象力。
  • 您应该提供任何描述您的代码的源代码。你说“我将无法访问 stackview”是什么意思?
  • 对此感到抱歉。我已经更新了代码。我没有添加代码的原因是因为示例 StackView 代码是这样的。

标签: qt qml stackview


【解决方案1】:

你有很多选择。

一种方法是,将signal 添加到QMLfile1.qmlroot 元素,并在main.qml 中连接到它。更改将在那里执行。

您还可以将property var callback 添加到QMLfile1.qmlroot 元素中,在实例化它时注入StackViewpush 方法。

最后,您可以不隐藏StackViewid 并跨文件边界访问它。我一般不喜欢那样。

【讨论】:

  • 您好,谢谢。可以给我一个示例代码吗?
  • 对不起,我现在时间很少。您能否再概述一下您计划的用例?这将帮助我知道,哪个选项最适合您……如果有的话。很好,StackLayoutSwipeView 可能更符合您的要求。
  • 谢谢 :) 我想出了如何去做。我在拥有 StackView 的 QML 文件中创建了每个 QML 文件的组件。
猜你喜欢
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多