从同一个tabbedpane中的不同qml选项卡访问属性

时间:2014-05-29 23:11:26

标签: qt blackberry qml blackberry-10

我的main.qml包含tabbedpane,其中有两个标签:tab1和tab2。 我希望能够将文本从一个标签更改为另一个标签。

如果我对导航窗格做同样的事情,那么它可以工作,但显然没有标签。有什么方法可以在他们之间分享信息吗?我已尝试用c ++中的信号但它也没有工作(我猜它不知道实例?)。

任何建议都表示赞赏。

main.qml:

TabbedPane {
Tab {
    Tab1 {
    }
}
Tab {
    Tab2 {
    }
}
attachedObjects: [
    Tab1 {
        id: tab1
    },
    Tab2 {
        id: tab2
    }        
]
}

Tab1.qml:

Page {
property alias labeltab1: labeltab1
Container {
    Label {
        id: labeltab1
        text: "label tab1"
    }
    Button {
        id: buttontab1
        text: "tab1"
        onClicked: {
            tab2.labeltab2.text = "This is coming from tab1"
        }
    }
}
}

Tab2.qml:

Page {
property alias labeltab2: labeltab2
Container {
    Label {
        id: labeltab2
        text: "Label tab2"
    }
    Button {
        id: buttontab2
        text: "tab2"
        onClicked: {
            tab1.labeltab1.text = "This is coming from tab2"
        }
    }
}
}

2 个答案:

答案 0 :(得分:2)

我猜它实际上比标签更简单,我找到了自己的解决方案。

我注意到,“thepane”无法检测到“thepane”是否可链接,并且在从其中一个标签中输入时不会显示其名称。此外,带冒号的属性将自动绑定值afterit,如:text:thepane.mystring

单击按钮时,它会更改mystring的值,从而更改两个标签文本。

main.qml

TabbedPane {
id: thepane
property string mystring
Tab {
    Tab1 {

    }
}
Tab {
    Tab2 {

    }
}
}

Tab1.qml

Page {
Container {
    Label {
        id: labeltab1
        text: thepane.mystring
    }
    Button {
        id: buttontab1
        text: "tab1"
        onClicked: {
            thepane.mystring = "This is coming form tab1"
        }
    }
}
}

Tab2.qml

Page {
Container {
    Label {
        id: labeltab2
        text: thepane.mystring
    }
    Button {
        id: buttontab2
        text: "tab2"
        onClicked: {
            thepane.mystring = "This is coming from tab2"
        }
    }
}
}

答案 1 :(得分:0)

谢谢您的想法。 我更改了代码。现在对我来说更好,也许对其他人也更好:)

main.qml

TabbedPane {
    id: main_Pane

    property string action_1
    property string action_2

    Tab {
        Tab1 {}
    }

    Tab {
        Tab2 {}
    }
}

Tab1.qml

Page {

    Container {

        Label {
            text: main_Pane.action_1
        }
        Button {
            text: "Button 1"

            onClicked: {
                main_Pane.action_2 = "This is action form Tab1"
            }
        }
    }
}

Tab2.qml

Page {

    Container {

        Label {
            text: main_Pane.action_2
        }
        Button {
            text: "Button 2"

            onClicked: {
                main_Pane.action_1 = "This is action from Tab2"
            }
        }
    }
}