Qt/QML:如何在 QML 中双向同步 ScrollView?

Posted

技术标签:

【中文标题】Qt/QML:如何在 QML 中双向同步 ScrollView?【英文标题】:Qt/QML: How to bidirectional sync ScrollView in QML? 【发布时间】:2020-03-08 11:42:44 【问题描述】:

我想同步两个可滚动列表视图的 contentY,如此简化代码所示

Item 
    SplitView 
        orientation: Qt.Horizontal

        Component1 
            id: left
            contentY: right.contentY
        
        Component1 
            id: right
            contentY: left.contentY
         
    


//Component1.qml

Item 
    property alias contentY: component2.contentY

    Component2 
        id: component2
    


//Component2.qml

Item 
    property alias contentY: list.contentY

    ScrollView 
        ListView 
            id: list
        
    
 

当我启动或重新加载 QML 场景并仅在一个拆分视图中滚动时,它正在工作。但是,一旦我开始在另一个列表视图中滚动,双向绑定就会被破坏,并且 contentY 不再同步。我只能彼此分开滚动列表视图。我怎样才能避免这种情况?有没有更好的同步内容的方法?

【问题讨论】:

【参考方案1】:

我找到了一个似乎可行的解决方案:

Item 
    SplitView 
        orientation: Qt.Horizontal
        
        Component1 
            id: left
            Binding 
                target: right
                property: "contentY"
                value: left.contentY
            
        
        Component1 
            id: right
            Binding 
                target: left
                property: "contentY"
                value: right.contentY
            
         
    


//Component1.qml

Item 
    property alias contentY: component2.contentY
    
    Component2 
        id: component2
    


//Component2.qml

Item 
    property alias contentY: list.contentY

    ScrollView 
        ListView 
            id:list
        
    

但是,如果有更好的解决方案,我会感谢任何提示 :)

【讨论】:

以上是关于Qt/QML:如何在 QML 中双向同步 ScrollView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt QML 中创建多屏应用程序

如何在QT QML中替换变体数组文本

如何在 QT QML 中创建自己的目录?

如何在 Qt QML 中处理 mac 集成 About MenuBar 项?

QT / QML如何在地图上运行mapReady?

如何使用qml qt3d(qt)将对象旋转一个角度?