Qt/QML编程之路:qml通过C++传递变量给另一个qml(42)

Qml的项目设计时,不可避免涉及到qml之间的调用,此时很正常想象到的是如何进行事件传输和参数传输。一般就是在qml文件中定义property int, 或者定义 signal mySignal。
我就遇到了这么一种情况,需要把一个image的source,也就是图片的路径信息,从设置界面直接传递到要设置背景的qml界面。
一开始,我是想如何在同一个qml中实现,发现不可行。
后来,我想可以qml之间进行传递,但是因为qml的树状结构设计,不太容易直接去调用。
再想了想,通过qml发送消息,让c++去处理。qml作为界面UI,是消息主要的发出者,尤其界面消息。
到了C++里面,对应的树状结果,就能把这个string 变量传递到中央c++主类,这个类包含了下面各个界面对应的C++类,
通过主类直接去修改那个要设置的界面,把string通过那个类的一个Set函数用进去。最终解决了这个问题。
一个叶qml文件

Item {
    id:leafItem
    width: 320
    height: 320
    visible: true

    property string strImageSource: "qrc:/bk1.png"

    Rectangle{
        id:bRect
        anchors.fill:parent
        Image{
            id:bImageTest
            source:strImageSource
        }
    }
    XXX//变更strImageSource的值,最终会用到另一个qml,策略:先传到根q

你可能感兴趣的:(qt,qml)